Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Trả lại tất cả Người dùng, ngay cả những người không phù hợp với tiêu chí của tôi

Như đã được lưu ý ở những nơi khác ở đây, việc này đơn giản hơn nhiều nếu bạn sử dụng các phép nối kiểu ANSI.

Mặc dù vậy, sẽ hơi phức tạp vì bạn muốn LEFT JOIN danh sách những người tham gia INNER JOIN giữa HR_DOCUMENTS_OF_RECORDHR_DOCUMENT_TYPES_VL . Có nghĩa là, đối với mỗi người, bạn muốn các tài liệu hồ sơ thuộc loại "Báo cáo giải phóng mặt bằng bảo mật", nếu có.

Đây là cách bạn làm điều đó:

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;

Lưu ý INNER JOIN giữa DORDOR_TYPE nằm trong ngoặc đơn và LEFT JOIN điều kiện là sau dấu ngoặc đơn.

Nếu bạn chỉ LEFT JOIN một cách ngây thơ mọi thứ và bất kỳ người nào có tài liệu hồ sơ ngoài báo cáo thông quan an ninh, bạn sẽ nhận được quá nhiều hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục PL / SQL - quá nhiều giá trị

  2. Oracle:Đang tải một tệp xml lớn?

  3. Thêm ngày vào dấu thời gian

  4. SSIS - không thể chuyển đổi giá trị do có khả năng mất dữ liệu

  5. Kiểm tra xem các bảng có giống nhau hay không bằng cách sử dụng SQL trong Oracle