Найти в Дзене
Q-ANSWER

MYSQL LEFT JOIN возвращает неожиданные результаты

MYSQL LEFT JOIN возвращает неожиданные результаты
У меня есть две таблицы talk_comments и talk_comment_votes . Я запускаю следующий код для выбора, commentId , numberOfUpvotes , ifUserUpvoted , numberOfDownvotes , isUserDownvoted code> usin LEFT JOINs в ту же таблицу. SELECT c.id, COUNT(v1.id) as upvotes, COUNT(v2.id) as userUpvoted, COUNT(v3.id) as downvotes, COUNT(v4.id) as userDownvoted FROM talk_comments c
LEFT JOIN talk_comment_votes v1 ON v1.comment_id = c.id AND v1.status = 1
LEFT JOIN talk_comment_votes v2 ON v2.comment_id = c.id AND v2.status = 1 AND v2.user_id = 1 AND v2.is_anonymous = 0
LEFT JOIN talk_comment_votes v3 ON c.id = v3.comment_id AND v3.status = 2
LEFT JOIN talk_comment_votes v4 ON c.id = v4.comment_id AND v4.status = 2 AND v4.user_id = 1 AND v4.is_anonymous = 0
WHERE c.id = 2 GROUP BY c.id
У меня есть следующие данные в моей таблице talk_comment_votes Таким образом, согласно запросу, он должен выбрать значения 2,2,0,1,1соответственно. Когда

MYSQL LEFT JOIN возвращает неожиданные результаты

У меня есть две таблицы talk_comments и talk_comment_votes .

Я запускаю следующий код для выбора, commentId , numberOfUpvotes , ifUserUpvoted , numberOfDownvotes , isUserDownvoted code> usin LEFT JOINs в ту же таблицу.

SELECT c.id, COUNT(v1.id) as upvotes, COUNT(v2.id) as userUpvoted, COUNT(v3.id) as downvotes, COUNT(v4.id) as userDownvoted FROM talk_comments c
LEFT JOIN talk_comment_votes v1 ON v1.comment_id = c.id AND v1.status = 1
LEFT JOIN talk_comment_votes v2 ON v2.comment_id = c.id AND v2.status = 1 AND v2.user_id = 1 AND v2.is_anonymous = 0
LEFT JOIN talk_comment_votes v3 ON c.id = v3.comment_id AND v3.status = 2
LEFT JOIN talk_comment_votes v4 ON c.id = v4.comment_id AND v4.status = 2 AND v4.user_id = 1 AND v4.is_anonymous = 0
WHERE c.id = 2 GROUP BY c.id

У меня есть следующие данные в моей таблице talk_comment_votes

Таким образом, согласно запросу, он должен выбрать значения 2,2,0,1,1соответственно. Когда я нарушаю эти операторы JOIN и выполняю запросы, он возвращает ожидаемые результаты. Но с помощью JOINs он возвращает что-то вроде следующего.

-2

Могу ли я получить помощь по исправлению этого?

Благодарю.

http://q-answer.ru/questions/mysql-left-join-vozvraschaet-neozhidannye-rezul-taty-3504.html