MySQL join: как получить результат из одной таблицы, даже если во второй таблице нет соответствующих данных - PullRequest
0 голосов
/ 03 июля 2018

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

       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;

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

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Я думаю, что вы ищете Левое внешнее соединение .

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;
0 голосов
/ 03 июля 2018

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

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