Несколько соединений MySQL - PullRequest
       4

Несколько соединений MySQL

2 голосов
/ 05 сентября 2011

У меня есть три таблицы, из которых мне нужно получить информацию, одна таблица содержит информацию, а две другие содержат информацию, которую мне нужно сосчитать.

поэтому первая структура таблиц:

tbl_img
img_id
img_name
tbl_comments
comment_id
img_id
comment
tbl_vote
vote_id
logo_id

Я хочу, чтобы в результатах было количество комментариев и голосов, относящихся к каждому логотипу.

У меня есть небольшая часть запроса для подсчета комментариев, но я не знаю синтаксис для второго соединения.

SELECT l.img_id, l.img_name, COUNT(c.comment_id) AS comment_count
FROM tbl_images as l
LEFT OUTER JOIN tbl_comments AS c USING (img_id);

Может кто-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

как насчет этого:

SELECT l.img_id, l.img_name, 
 (SELECT COUNT(*) FROM tbl_comments c WHERE i.img_id = c.img_id ) AS comment_count,
 (SELECT COUNT(*) FROM tbl_vote v WHERE i.img_id = v.img_id ) AS vote_count
FROM tbl_images i 
0 голосов
/ 05 сентября 2011

Похоже, вам нужны два запроса для этого: один для подсчета голосов, а другой для подсчета комментариев.

Насколько я знаю, COUNT подсчитывает строки результата и объединяет, чтобы создать все строки результата для отображения всехразрешенные перестановки объединенных таблиц.

Предполагая, что у вас есть I записей, каждая с J комментариями и K голосами, вы получите J * K строк для каждой записи после объединений, и COUNT оба возвратят этот J * K вместоправильное количество.

Я не помню, можете ли вы выполнять внутренние запросы в MySQL, но это был бы путь.(См. Ответ Кевина Бертона)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...