Я пытаюсь выбрать таблицу с несколькими объединениями, одну для количества комментариев с использованием COUNT и одну, чтобы выбрать общее значение для голосования, используя SUM, проблема в том, что эти два объединения влияют друг на друга, а не показ:mysql: проблема с множественным соединением
3 голосов 2 комментария
я получаю 3 * 2 = 6 голосов и 2 * 3 комментарии
Это запрос, я использую:
SELECT t.*, COUNT(c.id) as comments, COALESCE(SUM(v.vote), 0) as votes
FROM (topics t)
LEFT JOIN comments c ON c.topic_id = t.id
LEFT JOIN votes v ON v.topic_id = t.id
WHERE t.id = 9
Не приведет ли это к большей загрузке и дополнительной работе для базы данных, или это сложнее для базы данных работать с несколькими объединениями, чтобы отделить их? – Dennis
Большинство баз данных имеют внутреннее кэширование для страниц данных и индексов, поэтому это может и не быть проблемой. Кроме того, работа, которая необходима для компенсации декартова продукта, может быть хуже. Отчасти это зависит от вашей конкретной системы и ваших данных, поэтому самый точный ответ требует тестирования в * вашей * среде. –