Я пытаюсь использовать левое соединение, используя несколько условий, я получаю результаты как внутреннее соединение вместо левого соединения. Пожалуйста, исправьте мой запрос в squirrel-sql

#sql #squirrel-sql

Вопрос:

Я хочу, чтобы все записи, использующие левое соединение из вкладки;файл 1, Таблица 2 и таблица 3 за апрель месяц, а также где город = Лондон. Я ожидаю 2 записи в конечном результате и с первой записью = лондон, а вторая запись пуста или пуста.

 Table1 Table2 table3   id amt month id ac month ac city month  A123 400 April A123 ac11 April ac11 london April  A124 500 April A124 ac12 April ac12 milan April  A123 600 May A123 ac11 May ac11 london May  A124 700 May A124 ac12 May ac12 milan May    Desired Result  Table3  id amt ac city month A123 400 ac11 london April A124 500 ac12 April     Actual Result  Table3  id amt ac city month A123 400 ac11 london April  

Я использую беличий sql и не получаю желаемого результата, используя следующий запрос. Дайте мне знать, как это исправить.

 select a.id, a.amt, b.ac, c.city, a.month from table1 as a  left join table2 as b on a.id=b.id  left join table3 as c on b.ac=c.ac  where a.month = 'April' and b.month = 'April' c.month = 'April'  and c.city = 'london'  

Комментарии:

1. Переместите условия таблиц b и c с МЕСТА на МЕСТО, чтобы получить истинный результат СОЕДИНЕНИЯ СЛЕВА;

Ответ №1:

Вы не можете фильтровать таблицы, объединяемые в левое соединение(в вашем случае таблицы b и c) внутри предложения where. Каждый фильтр, который необходимо применить к этим таблицам, должен быть помещен в предложение ON, в противном случае простое соединение становится внутренним соединением. Например

 left join table2 as b on (a.id = b.id and b.month = ‘April’)  

Ответ №2:

Простой способ использования соединений. Я часто смотрю на эту диаграмму. моя любимая схема