MySQL join: как получить результат из одной таблицы, даже если во второй таблице нет соответствующих данных

0

Итак, у меня есть две таблицы с "статьями" и "тегами". Я пытаюсь извлечь статьи и их соответствующие теги с помощью этого кода:

       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;

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

  • 0
    Используйте левое соединение вместо внутреннего соединения.
Теги:

2 ответа

1

Вы можете использовать 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 в порядке.

0

Я думаю, что вы ищете 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню