sql >> データベース >  >> RDS >> Oracle

私の基準に合わないユーザーも含め、すべてのユーザーを返す

    ここで他の場所で説明されているように、ANSIスタイルの結合を使用すると、この種の操作ははるかに簡単になります。

    それでも、LEFT JOINを実行したいので、少し注意が必要です。 INNER JOINへのユーザーリスト HR_DOCUMENTS_OF_RECORDの間 およびHR_DOCUMENT_TYPES_VL 。つまり、各人に対して、「セキュリティクリアランスレポート」タイプの記録文書が存在する場合はそれが必要です。

    その方法は次のとおりです。

    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;
    

    INNER JOINに注意してください DORの間 およびDOR_TYPE 括弧内にあり、LEFT JOIN 状態はです かっこ。

    素朴にLEFT JOINする場合 すべての人がセキュリティクリアランスレポート以外の記録文書を持っていると、行が多すぎます。



    1. ORA-01008:すべての変数がバインドされている場合、すべての変数がバインドされているわけではありません

    2. ORACLEのselectステートメントのフィールドのデータ型を取得します

    3. PHPExcel:無効なセル座標エラー

    4. SQLクエリから固定幅のフラットフォーマット出力ファイルを生成します