Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - Ляво външно съединение с клауза where

Вашето обяснение не корелира с вашето запитване. Вие споменахте

Трябва обаче да включа и клауза where, но... Все още искам ред от лявата таблица да бъде върнат за всеки запис в лявата таблица, дори ако условието в клаузата where не е не съм срещал. "

Така че смятам, че вашето запитване изглежда нещо подобно

SELECT a.*, 
       b.* 
FROM   a 
       LEFT OUTER JOIN b 
                    ON a.vin = b.vin 
WHERE  Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND 
                                      Trunc(b.check_in_date) - 1 

В горното LEFT OUTER JOIN ще се преобразува в INNER JOIN поради филтрирането на дясната таблица в Where клауза

Така че, както сте използвали в първата заявка, правилните филтри за таблица трябва да са част от JOIN условие, което ще върне редове от ЛЯВАТА таблица, въпреки че няма съответстващи записи в ДЯСНАТА таблица.

SELECT a.*, 
       b.* 
FROM   a 
       left outer join b 
                    ON a.vin = b.vin 
                       AND Trunc(a.rep_open_date) BETWEEN 
                           Trunc(b.check_in_date) + 1 AND 
                           Trunc(b.check_in_date) - 1 

Актуализация:

Използвали сте оператор между като 10 between 11 and 9 но трябва да е 10 between 9 and 11

SELECT a.*, 
       b.* 
FROM   a 
       left outer join b 
                    ON a.vin = b.vin 
                       AND CAST(a.rep_open_date as date) BETWEEN 
                           CAST(b.check_in_date as date) - 1 AND 
                           CAST(b.check_in_date as date) + 1 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на таблица от изглед - Oracle SQL SQL грешка:ORA-01723:не са разрешени колони с нулева дължина

  2. Топ 30 най-полезни заявки за едновременен мениджър

  3. Groovy Oracle Stored Proc - неваден индекс на колона

  4. Как да излекувам причината за изключението при хибернация, възникнало IllegalArgumentException при извикване на сетера?

  5. Възможно ли е да се генерират django модели от базата данни?