2013-08-12 2 views
0

Я использую левое соединение для подсчета непревзойденных строк, но хотя мой запрос верен, у меня есть некоторая логическая проблема. check this fiddleleft join to count unmatched row дает неверный счет

запрос должен возвращать количество 1, но вместо этого возвращает 0.I знать причину, потому что это находит подходящий ряд, но я не знаю других путей решения problem.I нужно подсчитывать невидимые вопросы по пользователь.

ответ

1

Вы должны поставить свой пункт qv.question_view_id IS NULL как часть JOIN, а не WHERE.

SELECT qt.user_id, count(q.question_id) cnt 
    FROM questions q 
    INNER JOIN questions_to qt ON qt.question_id = q.question_id 
    LEFT JOIN question_view qv ON q.question_id = qv.question_id 
    -- Not that I've moved this clause into the JOIN condition. 
    AND qv.question_view_id IS NULL 
WHERE qt.user_id = 13 
GROUP BY qt.user_id