Я делаю блог, в котором есть статья, в которой могут быть теги и комментарии. Я хочу попробовать и получить правильный SQL, чтобы получить один запрос. У меня есть 4 таблицы:MySQL объединяет 3 таблицы и подсчитывает другую
article
+------------+-----------------+------------+
| article_id | title | photo |
+------------+-----------------+------------+
| 1 | This is a test | image1.jpg |
| 2 | Another Article | image2.jpg |
+------------+-----------------+------------+
article_tag
+------------+--------+
| article_id | tag_id |
+------------+--------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
+------------+--------+
tags
+--------+------+
| tag_id | name |
+--------+------+
| 1 | tag1 |
| 2 | tag2 |
+--------+------+
comment
+------+---------+------------+
| name | message | article_id |
+------+---------+------------+
| 1 | hello | 1 |
| 2 | a | 2 |
+------+---------+------------+
Я пытаюсь получить это:
+------------+----------------+------------+---------+----------+
| article_id | title | photo | tag_ids | comments |
+------------+----------------+------------+---------+----------+
| 1 | This is a test | image1.jpg | 1,2 | 1 |
+------------+----------------+------------+---------+----------+
Это то, что я до сих пор:
SELECT a.article_id, a.title, a.photo, a.date, a.description_long, a.author, GROUP_CONCAT(tag_id) as `tag_ids`, COUNT(c.comment_id) as comments
FROM article as a
JOIN article_tag as at
ON a.article_id = at.article_id
LEFT JOIN comment as c
ON a.article_id = c.article_id
WHERE a.article_id = 1
Но я получаю комментарии, как 2 вместо 1? Спасибо. PS Если кто-нибудь знает способ, чтобы я мог изменить tag_ids от 1,2 до tag1, tag2, который был бы потрясающим :-)
Там нет столбца с именем 'comment_id' в вашем замечании таблицы ... – Terry
Количества отчетливого, он возвращает 2 строки из-за объединения с тегом – jazzytomato
К сожалению забыло включить это в вопросе. Но у меня есть одна – supajason