2010-03-18 94 views
1

有3個表,產品,選項和Prod_Opts_relations,後者持有的product_id和option_id,所以我應該能夠找出被選擇用於任何給定的產品的選項。SELECT(IF(詢問

現在我想從選項表中檢索所有選項,其中額外別名字段的值應該保持選中或取消選中,具體取決於關係表中是否存在產品ID的關鍵字記錄。

到目前爲止,我想出了這個:

SELECT 
IF(IN(SELECT id_option FROM prod_opt_relations WHERE id_product='18'),'y','n') AS booh 
,optionstable.id AS parent_id 
,optionstable.name_en AS parent_english 
,optionstable.name_es AS parent_spanish 
FROM product_options AS optionstable 
WHERE 1 

導致語法錯誤。

唉,我只是想不通哪裏出問題這裏

+0

你會得到哪個錯誤信息? – titanoboa 2010-03-18 11:03:07

回答

1

用你的兩個表之間的left join從選項表中檢索所有的數據每當有匹配與否。然後測試從右表返回的值是否爲空以設置您的y/n標誌。

SELECT                   
    IF(por.id_product IS NULL, 'n', 'y') AS booh          
    ,optionstable.id AS parent_id             
    ,optionstable.name_en AS parent_english          
    ,optionstable.name_es AS parent_spanish          
FROM 
    product_options AS optionstable           
    LEFT JOIN prod_opt_relations as por ON (
    por.id_product=18 AND por.id_option=optionstable.id_option 
    ) 
WHERE 1                  
+0

似乎還不錯。感謝您的答覆 – Harold 2010-03-18 12:43:39