Левое внешнее соединение с двумя таблицами MySQL - PullRequest
0 голосов
/ 17 июня 2020

Ниже приведены примеры таблиц, которые у меня есть.

Таблица событий: -

id    eventName        modelId     sheetId

1     Input edit        1           2
2     Formula edit      2           1
3     Delete model      null        3
4     Delete sheet      3           null

Таблица моделей: -

id     modelName
1       test1
2       test2
3       test3

Таблица листов: -

id      sheetName
1       testSheet1
2       testSheet2
3       testSheet3

Теперь мое требование: мне всегда нужны все записи из таблицы событий, которые мне нужны (все столбцы таблицы событий + имя модели и имя листа).

Ниже запрос, который я написал, но этот запрос не дает ожидаемого результата хотя я знаю, что мне нужно использовать левое внешнее соединение, но я не могу этого сделать: -

select
  e.id,e.eventName,e.modelId,e.sheetId,m.modelName,s.sheetName 
from
  Event e,
  Model m,
  Sheet s 
where e.modelId=m.id and e.sheetId=s.id;

Ожидаемый результат : -

id    eventName        modelId     sheetId    modelName    sheetName

1     Input edit        1           2          test1       testSheet2
2     Formula edit      2           1          test2       testSheet1
3     Delete model      null        3          null        testSheet3
4     Delete sheet      3           null       test3        null

1 Ответ

0 голосов
/ 17 июня 2020

Это должно быть очень просто c запрос:

select
  e.id,e.eventName,e.modelId,e.sheetId,m.modelName,s.sheetName 
from
  Event e
left join 
  Model m on m e.modelId=m.id
left join
  Sheet s on e.sheetId=s.id;
...