2011-09-22 65 views
2

有沒有辦法可以使用下面的cd.date_id disctinct?它變得連接起來,但我也想不同的功能藏漢所以它就像GROUP_CONCAT(CAST(distinct(cd.date_id) AS CHAR)) As date_id但它似乎沒有工作...Mysql獨特的功能嵌套在其他功能選擇

SELECT b.bar_id, b.bar_name, b.bar_image, b.bar_lat, b.bar_lng, b.bar_address, 
     b.bar_phone, b.bus_web, b.bar_open_hours, c.coupon_id, c.coupon_text, 
     bc.coupon_start_time, bc.coupon_exp_time, 
     GROUP_CONCAT(CAST(cd.date_id AS CHAR)) As date_id, 
     d.calender_date, bc.bc_id, bc.priority As priority 
     FROM bars b 
     JOIN bars_coupons bc ON (bc.bar_id = b.bar_id) 
     JOIN coupons c ON (bc.coupon_id = c.coupon_id) 
     JOIN calendardates cd ON (cd.bc_id = bc.bc_id) 
     JOIN date d ON (d.date_id = cd.date_id) 
     GROUP BY cd.bc_id 

回答

0

DISTINCT裏面也就沒有任何意義。你想在這裏完成什麼?看起來你只需要每行不同的一行cd.date_id

如果是這種情況,只需在末尾添加cd.date_id到GROUP BY子句即可。就像這樣:

GROUP BY cd.bc_id, cd.date_id 

而當你正在使用MySQL,你不用擔心使用上的所有選定列的聚合函數,如果他們將不得不在本集團分組By子句的所有行相同的值,如果沒有的MySQL將只挑選的第一個

UPDATE
在文檔尋找GROUP_CONCAT,你也許能夠做這樣

GROUP_CONCAT(DISTINCT CAST(cd.date_id AS CHAR)) As date_id 
+0

的date_i d是串聯的,但我希望它們是不同的,所以它可以在串聯前爲每個bc_id刪除所有重複項 – user952543

+0

@ user952543,試圖將'cd.date_id'添加到您的group by子項中,正如我在我的回答中所建議的那樣,而不是在Concat中使用DISTINCT。看看它是否工作 – danishgoel

+0

,給出重複bar_id的我需要與concate date_id不同的bar_ids – user952543