#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’)