0

次のようなクエリがあります。

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 グループ機能の無効な使用

ここで何が欠けていますか?ありがとう

4

2 に答える 2

0

元のレコード全体を選択してから、web_order_item でグループ連結を実行しています。これにより、DISTINCT プロパティのために単一の行が生成されます。複数のレコードがある場合は、そこでグループ化し、次にもう一度グループ化しようとしています...とにかく最後に何のためにグループ化していますか? 集計はありません。オーダーバイで十分です。group by を削除するか、group by を変更して、グループ連結の前にすべての関連項目を含めます。

于 2013-02-13T16:49:54.917 に答える
0
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を参照してください。

于 2013-02-13T16:55:13.833 に答える