Я пытаюсь использовать несколько связанных ЛЕВЫХ СОЕДИНЕНИЙ для заполнения полей в запросе 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
.Извините, что потратил время авторов на это.Не уверен, стоит ли мне удалять, или?