MySQL Query не может получить результат при использовании левого соединения нескольких таблиц только к одной таблице - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь использовать левое соединение нескольких таблиц к одной:

SELECT unit.unit_id,
       unit_situation_legal_protection.unit_situation_legal_protection_id,
       situation.situation_id,
       situation.situation_type,
       legal.legal_id,
       legal.legal_type,
       protection.protection_id,
       protection.protection_type,
       unit_situation_legal_protection.unit_situation_legal_protection_date_added,
       unit_situation_legal_protection.unit_situation_legal_protection_status
FROM unit
LEFT JOIN unit_situation_legal_protection ON unit.unit_id = unit_situation_legal_protection.unit_id
LEFT JOIN situation ON unit_situation_legal_protection.situation_id= situation.situation_id
LEFT JOIN legal ON unit_situation_legal_protection.legal_id = legal.legal_id
LEFT JOIN protection ON unit_situation_legal_protection.protection_id=protection.protection_id
WHERE unit_situation_legal_protection.unit_id = 146

Где мне нужно получить legal_type, protection_type и situation_type из соответствующих таблиц и добавитьих в возвращенные строки.

Я могу получить legal_id, protection_id и situation_id из результата, но legal_type, protection_type и situation_type всегда пусты.

РЕДАКТИРОВАТЬ: Объяснение

Есть 5 таблиц:

Таблица unit, которая является основной, и unit_situation_legal_protection, которая подключена к unit - unit_id в качестве внешнего ключа.

unit_situation_legal_protection имеют другие внешние ключи, такие как legal_id, protection_id и situation_id.Каждая таблица имеет отдельную таблицу, содержащую id и type.

Таким образом, таблица ситуации содержит: situation_id и situation_type.

1 Ответ

0 голосов
/ 12 сентября 2018

WHERE unit_situation_legal_protection.unit_id = 146 делает join из вашего left join.Удалите предложение where и добавьте его в объединение:

SELECT unit.unit_id,
       unit_situation_legal_protection.unit_situation_legal_protection_id,
       situation.situation_id,
       situation.situation_type,
       legal.legal_id,
       legal.legal_type,
       protection.protection_id,
       protection.protection_type,
       unit_situation_legal_protection.unit_situation_legal_protection_date_added,
       unit_situation_legal_protection.unit_situation_legal_protection_status
FROM unit
LEFT JOIN unit_situation_legal_protection ON unit.unit_id = unit_situation_legal_protection.unit_id and unit_situation_legal_protection.unit_id = 146
LEFT JOIN situation ON unit_situation_legal_protection.situation_id= situation.situation_id
LEFT JOIN legal ON unit_situation_legal_protection.legal_id = legal.legal_id
LEFT JOIN protection ON unit_situation_legal_protection.protection_id=protection.protection_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...