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

Oracle - where 句を使用した左外部結合

    あなたの説明はあなたの質問と相関していません。

    をメンションしました

    "ただし、WHERE 句も含める必要がありますが....WHERE 句の条件が異なる場合でも、左側のテーブルの各レコードに対して左側のテーブルの行が返されるようにしたいです。会っていません。 "

    したがって、クエリは次のようになると思います

    SELECT a.*, b.* FROM a LEFT OUTER JOIN b ON a.vin =b.vin WHERE Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND Trunc(b.check_in_date ) - 1   

    上記の LEFT OUTER JOIN INNER JOIN に変換されます Where の右側のテーブルのフィルタリングによる 節

    したがって、最初のクエリで使用したように、正しいテーブル フィルターは JOIN の一部である必要があります。 右側のテーブルに一致するレコードがない場合でも、左側のテーブルから行を返します。

    SELECT a.*, b.* FROM a left outer join b ON a.vin =b.vin AND Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND Trunc(b.check_in_date ) - 1   

    更新:

    10 between 11 and 9 のような between 演算子を使用しました ただし、9 ~ 11 の間の 10 にする必要があります

    SELECT a.*, b.* FROM a left outer join b ON a.vin =b.vin AND CAST(a.rep_open_date as date) BETWEEN CAST(b.check_in_date as date) - 1 AND CAST (b.check_in_date as date) + 1   

    1. PHP SQL:1つのhtmlフォームから複数のデータベースにデータを保存する方法または1つのデータベースから別のデータベースにデータを自動的にコピーする方法

    2. MariaDBでサポートされている文字セットの完全なリスト

    3. password_hash、password_verify、MySQLの誤解?

    4. 複数のテーブルの総数で注文することはできますか?