Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zwróć wszystkich Użytkowników, nawet tych, którzy nie spełniają moich kryteriów

Jak zauważono w innym miejscu, tego rodzaju rzeczy są znacznie prostsze, jeśli używasz złączeń w stylu ANSI.

Mimo to jest to trochę trudne, ponieważ chcesz LEFT JOIN Twoja lista osób do INNER JOIN między HR_DOCUMENTS_OF_RECORD i HR_DOCUMENT_TYPES_VL . Oznacza to, że dla każdej osoby chcesz mieć dokumenty rejestracyjne typu „Raport z kontroli bezpieczeństwa”, jeśli takie istnieją.

Oto jak to zrobić:

SELECT papf.person_id
     , (ppnf.first_name||' '||ppnf.last_name)                                    e_name
     , dor.document_name
     , dor_type.document_type
     , TO_CHAR(dor.creation_date, 'DD/MM/YYYY')                                  dor_issue_date
FROM per_all_people_f  papf
INNER JOIN per_person_names_f ppnf ON ppnf.person_id = papf.person_id
           AND ppnf.name_type                      = 'GLOBAL'
           AND SYSDATE BETWEEN ppnf.effective_start_date AND NVL(ppnf.effective_end_date,SYSDATE)
LEFT JOIN ( hr_documents_of_record dor 
INNER JOIN hr_document_types_vl dor_type ON dor_type.document_type_id = dor.document_type_id
           AND dor_type.document_type = 'Security Clearance Report'  ) ON dor.person_id = papf.person_id
WHERE SYSDATE BETWEEN papf.effective_start_date AND NVL(papf.effective_end_date,SYSDATE)
ORDER BY e_name DESC;

Zwróć uwagę na INNER JOIN między DOR i DOR_TYPE jest w nawiasach, a LEFT JOIN warunek jest po nawiasy.

Jeśli po prostu naiwnie LEFT JOIN wszystko i wszyscy ludzie mają dokumenty, oprócz raportów o poświadczeniach bezpieczeństwa, dostaniesz zbyt wiele wierszy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik zewnętrznych tabel Oracle w SQL Server

  2. Blob dane z Oracle do pliku tekstowego za pomocą Pythona

  3. Kiedy wpisuję kod dateadd lub datediff, cały czas pojawia się ten błąd ORA-00904 DATEADD INVALID IDENTIFIER.

  4. jak ustawić serveroutput na używanie połączenia jdbc w Jmeter?

  5. Znajdź źródło danych dla określonej tabeli - ORACLE