2014-10-10 5 views
0

Я не очень разбираюсь в MySQL-запросах, поэтому я мог бы сделать что-то неправильно. Упрощенные мой запрос, как это:AVG/COUNT Запрос MySQL НЕ работает

SELECT item.*, AVG(itemRating.rating) as 'rating', COUNT(itemRating.rating) as 'ratingCount' 
    FROM item, itemRating 
WHERE item.id IN (...) 
    AND itemRating.item_fk = item.id 
GROUP BY itemRating.item_fk 

Он отлично работает, когда элемент не имеет рейтинга (нет записи в таблице itemRating), за исключением. Есть ли способ решить эту проблему без потери информации?

+0

Как он может работать, если вы группируете неправильные столбцы? – zaratustra

+0

Как вы имеете в виду «неправильные столбцы»? – sprunk

+0

Вы пишете: 'SELECT item. *, AVG (itemRating.rating) как 'rating' ... GROUP BY itemRating.item_fk' Мне кажется, что вам нужно написать либо' SELECT itemRating.item_fk, AVG (itemRating.rating) как «рейтинг» ... GROUP BY itemRating.item_fk' или 'SELECT item. *, AVG (itemRating.rating) как 'rating' ... GROUP BY item. *' (Вы не можете написать элемент GROUP BY . * «Я сделал это, потому что я не знаю, какие столбцы у вас есть в таблице« item », вам нужно указать каждый столбец« item »в предложении GROUP BY]. – zaratustra

ответ

1
SELECT item.id, 
     AVG(itemRating.rating) as 'rating', 
     COUNT(itemRating.rating) as 'ratingCount' 
    FROM item 
    LEFT JOIN itemRating ON itemRating.item_fk = item.id 
WHERE item.id IN (...) 
GROUP BY item.id 
+0

Работает как шарм. Я думаю, что я должен обновить свои MySQL-основы :) – sprunk

Смежные вопросы