Итак, у меня есть две таблицы с "статьями" и "тегами". Я пытаюсь извлечь статьи и их соответствующие теги с помощью этого кода:
SELECT b.id, b.title, b.content, b.slug, b.created_at, GROUP_CONCAT(t.name) as tags
FROM blogs b INNER JOIN
tags t
ON b.id = t.blog_id
GROUP BY b.id, b.title;
Проблема в том, что если в блогах нет тега, тогда я не получаю никаких блогов, а не получаю блог без тегов, как это возможно
Вы можете использовать left join
:
SELECT b.id, b.title, b.content, b.slug, b.created_at,
GROUP_CONCAT(t.name) as tags
FROM blogs b LEFT JOIN
tags t
ON b.id = t.blog_id
GROUP BY b.id;
Обычно выбор группы столбцов с GROUP BY
будет плохим. Тем не менее, blogs.id
(предположительно) уникален в blogs
, так что это тот случай, когда выбор других столбцов из blogs
в порядке.
Я думаю, что вы ищете Left External Join.
select b.id,b.title,b.content,b.slug,b.created_at,GROUP_CONCAT(t.name) as tags
from
blogs b left join tags t
on b.id = t.blog_id
group by b.id,b.title;