[英]mysql group_concat in joins
我有一個查詢,看起來像這樣:
SELECT
*,
GROUP_CONCAT(DISTINCT web_order_item.od_pcode) AS items,
GROUP_CONCAT(DISTINCT woi_id) AS woi_ids
FROM web_order
JOIN web_order_item USING(od_id)
JOIN customer_master ON customer_master.VC_CUSTOMER_CODE = web_order.p_vendor
LEFT JOIN production_item ON production_item.ItemID IN (GROUP_CONCAT(DISTINCT woi_id)) AND QCStatus <> 'received'
WHERE
web_order.od_date >= FROM_UNIXTIME(1357257600)
AND web_order.od_date <= FROM_UNIXTIME(1359936000)
AND web_order.od_id > 0
AND 1
GROUP BY web_order.od_id
ORDER BY web_order.od_id DESC
該查詢拋出錯誤
常規錯誤:1111無效使用組功能
我在這里想念什么? 謝謝
您要完整地選擇原始記錄,然后在web_order_item上進行組連接,由於DISTINCT屬性,這將產生一行,如果有多個記錄,則將其分組,然后試圖再次分組...到底要做什么分組? 沒有聚合,只要按一個順序就足夠了。 刪除分組依據...或更改分組依據以在合並之前包含所有相關項...
SELECT
*,
GROUP_CONCAT(DISTINCT web_order_item.od_pcode) AS items,
GROUP_CONCAT(DISTINCT woi_id) AS woi_ids
FROM web_order
JOIN web_order_item USING(od_id)
JOIN customer_master ON customer_master.VC_CUSTOMER_CODE = web_order.p_vendor
LEFT JOIN production_item ON production_item.ItemID IN (GROUP_CONCAT(DISTINCT woi_id)) AND QCStatus <> 'received'
WHERE
web_order.od_date >= FROM_UNIXTIME(1357257600)
AND web_order.od_date <= FROM_UNIXTIME(1359936000)
AND web_order.od_id > 0
AND 1
GROUP BY items, woi_ids
ORDER BY web_order.od_id DESC
希望這會有所幫助
參考http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.