2010-05-09 75 views
0

我有以下查詢返回的元組2MySQL的SELECT Statment問題

SELECT bar_id, bar_name, town_name, bar_telephone, subscription_type_id, pic_type 
FROM towns, subscriptiontype, regions, bar 
LEFT JOIN barpictures bp ON bar.bar_id = bp.bar_id_fk 
WHERE town_id = town_id_fk 
AND bar.test_field = 0 
AND subscription_type_id = subscription_type_id_fk 
AND region_id = region_id_fk 
AND (type like 'logo%' OR type IS NULL) 

元組之間的主要區別是一個具有「類型」 =標誌和其他元組具有「類型」 = logo_large。我需要的不是有兩個元組,我需要,我有2個類型的屬性,一個抱着「標誌」和其他的「logo_large」

bar_id, bar_name, town_name, bar_telephone, subscription_type_id, pic_type1, pic_type2 

這可能嗎?

+0

混合ANSI-89和92連接語法,該查詢不應該通過語法檢查... – 2010-05-09 20:55:33

回答

1

是的,這是可能的:

SELECT ..., subscription_type_id, 
    MAX(IF(type='logo',type,NULL)) as pic_type1, 
    MAX(IF(type='logo_large',type,NULL)) as pic_type2 
... 
GROUP BY bar_id; 

的想法是使用聚合函數合併行,只選擇符合您的條件(不匹配行的聚集函數應該返回null)值