Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kembalikan semua Pengguna, bahkan mereka yang tidak sesuai dengan kriteria saya

Seperti yang telah dicatat di tempat lain di sini, hal semacam ini jauh lebih mudah dilakukan jika Anda menggunakan gabungan gaya ANSI.

Meski begitu, agak ribet karena ingin LEFT JOIN daftar orang Anda ke INNER JOIN antara HR_DOCUMENTS_OF_RECORD dan HR_DOCUMENT_TYPES_VL . Artinya, untuk setiap orang, Anda menginginkan dokumen catatan yang bertipe "Security Clearance Report", jika ada.

Inilah cara Anda melakukannya:

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;

Perhatikan INNER JOIN antara DOR dan DOR_TYPE dalam tanda kurung dan LEFT JOIN kondisi setelah tanda kurung.

Jika Anda secara naif LEFT JOIN segala sesuatu dan setiap orang memiliki dokumen catatan selain laporan izin keamanan, Anda akan mendapatkan terlalu banyak baris.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batasi ConnectionTimeout untuk Oracle Database

  2. Apakah ada yang setara dengan sp_getapplock, sp_releaseapplock di Oracle

  3. Masukkan beberapa baris dari R Dataframe ke Oracle Database

  4. Pembaruan Pemicu Oracle di Tabel Lain

  5. Koneksi SSIS ke Oracle