2011-10-29 2 views
0
SELECT li.listing_id, li.title, p.name, c.comment, COUNT(*) AS pic_count 
    FROM listings li 
    LEFT JOIN photos p ON li.listing_id = p.listing_id 
    LEFT JOIN comments c ON li.listing_id = c.listing_id 
    WHERE li.listing_id =1 
    GROUP BY li.listing_id 
    LIMIT 1; 

запрос выше, дает мне количество фотографий для данного листинга_ид, таким же образом, я хочу, чтобы количество комментариев для этого листинга_ид в том же запросе было возможно? 2 рассчитывается в одном запросе ..Рассчитать считанные несколько запросов, в том числе запрос

ответ

3

Ваш счет неверен. p.name не должно быть в списке полей, если вы хотите группировать по списку. Но даже без этого вы получаете 1 для списков без фотографии, из-за * в расчете.

Если фото получили уникальный идентификатор, вы можете сделать это:

SELECT li.listing_id, li.title, 
    COUNT(DISTINCT p.photo_id) as photo_count, 
    COUNT(DISTINCT c.comment_id) as comment_count 
FROM listings li 
    LEFT JOIN photos p ON li.listing_id = p.listing_id 
    LEFT JOIN comments c ON li.listing_id = c.listing_id 
WHERE li.listing_id =1 
GROUP BY li.listing_id 
LIMIT 1; 
+0

хорошо, у меня есть уникальный идентификатор для каждой таблицы, но по-прежнему ваш запрос не может выполнить .. – XoR

+0

Был 'с .comment' и дополнительную запятую в списке полей, которую я пропустил. Я удалил их. Можете ли вы попробовать еще раз и отправить сообщение об ошибке, если он все еще не работает? – GolezTrol

+0

да, это работает! :) – XoR

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