Oracle SQL Left Join с несколькими таблицами в FROM - PullRequest
0 голосов
/ 12 апреля 2020

Я не эксперт по SQL, но я столкнулся с SQL запросом, который мне нужно немного изменить. У меня есть это:

SELECT T1.COULMN1
       T1.COULMN2, 
       T1.COULMN3, 
       T2.COULMN4 
FROM TABLE1 T1, 
     TEST1, 
     TEST2,
LEFT JOIN TABLE2 T2 ON T1.COULMN1 = T2.COULMN1 AND T1.COULMN2 = T2.COULMN2 AND T1.COULMN3 = T2.COULMN3  FROM  
WHERE TEST1.NAME = 'test'
AND TEST2.ADDRESS = 'random'

, и оно не будет работать, когда я получу «Недопустимый идентификатор T1.COULMN3». Но если я удаляю TEST1 и TEST2 из FROM и, следовательно, из WHERE, это работает. Но мне нужно иметь TEST1 и TEST2 FROM и WHERE, как мне этого достичь?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы должны использовать несколько LEFT JOINS, как показано ниже, а также необходимо соединить TEST1 и TEST2 с TABLE1 или TABLE2, в противном случае нет смысла использовать TEST1 и TEST2.Также предоставьте дополнительную информацию относительно отношений между TABLE1, TABLE2 и Test1, Test2.

Примечание: -Пожалуйста, замените данные между большим и меньшим, чем на фактическое соотношение между TABLE1, TABLE2 и Test1, Test2.

        SELECT T1.coulmn1 t1.COULMN2,
           T1.coulmn3,
           T2.coulmn4
    FROM   table1 T1
           left join table2 T2
                  ON T1.coulmn1 = T2.coulmn1
                     AND T1.coulmn2 = T2.coulmn2
                     AND T1.coulmn3 = T2.coulmn3
           left join test1 T3
                  ON <T3.id> = <T1.id>
                     AND T3.name = 'test'
           left join test2 T4
                  ON <T4.id> = <T2.id>
                     AND T4.address = 'random'; 
...