2013-02-13 3 views
0

У меня есть запрос, который выглядит следующим образом:MySQL GROUP_CONCAT в соединениях

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 

Этот запрос выдает ошибку

General error: 1111 Invalid use of group function

Что я здесь отсутствует? Спасибо

ответ

0

Вы выбираете исходную запись целиком, а затем вы делаете группу concat на веб-странице_имя, это приведет к созданию одной строки из-за свойства DISTINCT, если есть более одной записи, вы группировка там, а затем попытка снова сгруппировать ... что вы, по-вашему, в конце концов? нет агрегации, достаточно будет порядка. вынимают группу по ... или изменить группу по включить все соответствующие пункты перед группой CONCAT ...

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 См