MySQL LEFT JOIN соединяет несколько таблиц неправильно - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь использовать несколько связанных ЛЕВЫХ СОЕДИНЕНИЙ для заполнения полей в запросе SELECT, однако мне не совсем понятна логика.У меня есть следующие таблицы:

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `group_id` bigint(20) DEFAULT NULL,
  `title` varchar(150) DEFAULT NULL,
  `due_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`))

CREATE TABLE `role_group` (
  `role_id` int(10) NOT NULL,
  `group_id` varchar(45) NOT NULL)

CREATE TABLE `role` (
  `id` int(11) NOT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`))

Я хочу вернуть имя роли для всех записей, чей идентификатор группы соответствует записи в role_group, но NULL в противном случае.

Мой текущий запрос выглядит следующим образом:

SELECT 
  t.id,
  t.group_id,
  t.title,
  t.due_date,
  r.name
FROM 
  tasks t
LEFT JOIN 
  role_group rg ON t.group_id = rg.group_id
LEFT JOIN 
  role r ON r.id = rg.role_id;

В данный момент запрос просто возвращает NULL в role.name независимо от того, есть ли соответствующие записи.

РЕДАКТИРОВАТЬ: Это была ошибка школьника - не было соответствующих записей в role_group для записей в tasks.Извините, что потратил время авторов на это.Не уверен, стоит ли мне удалять, или?

...