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

2つの左外部結合が機能しないOracleSQL

    問題は、(+)を使用していないことです。 language_idの場合 チェックします。
    テーブルは外部結合されているため、language_id NULLです レコードが見つからないが、language_id = 2をチェックする場合 、 しかし ? language_id NULLです 。

    a_tlの結果をどこで使用しているかもわかりません またはb_tl 、それはあなたの投稿の問題であり、元のクエリではないと思いますか?

    ただし、古い構文の代わりに明示的な結合を使用してください。慣れれば、読みやすく、理解しやすくなります。
    クエリは、 COALESCE (またはNVL よろしければ):

    SELECT COALESCE( a_tl.a_disp_name, a.a_name ) AS a_name,
           COALESCE( b_tl.b_disp_name, b.b_name ) AS b_name,
           a.a_id,
           b.b_id
    FROM a
    JOIN b ON ( b.b_id = a.a_id )
    LEFT JOIN a_tl ON ( a_tl.a_id = a.a_id AND a_tl.language_id = 2 )
    LEFT JOIN b_tl ON ( b_tl.b_id = b.b_id AND b_tl.language_id = 2 )
    

    私があなたの質問を正しく理解したことを願っています、それがうまくいかないかどうか尋ねてください。



    1. java.timeフレームワークで使用するためにPostgresなどのSQLデータベースに予定を保存する

    2. PostgresJSONデータ型Railsクエリ

    3. MySQLプロシージャでSQLEXCEPTIONメッセージを取得する

    4. SequelizeJSでの遅い関連付け