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

MYSQLINNERJOINで3種類の結果を取得

    LEFT OUTER JOINを使用すると、次のように3つのクエリを実行できます。-

    SELECT vehicles.ID 
    FROM vehicles 
    INNER JOIN insurance i1 
    ON vehicles.ID = i1.vehicle_ID 
    LEFT OUTER JOIN insurance i2 
    ON i1.vehicle_ID = i2.vehicle_ID 
    AND i2.expire > i1.expire
    WHERE i2.id IS NULL
    AND i1.expire < NOW()
    

    ここでは、それ以降の保険の有効期限に対して左外部結合を実行し、i2.idがNULLであることをチェックして、それ以降の有効期限が見つからないことを確認してから、見つかった有効期限をチェックして、有効期限が切れていることを確認します。

    SELECT vehicles.ID 
    FROM vehicles 
    LEFT OUTER JOIN insurance i1 
    ON vehicles.ID = i1.vehicle_ID 
    WHERE i1.id IS NULL
    

    これは、一致する保険レコードがないことを確認するだけです

    SELECT vehicles.ID 
    FROM vehicles 
    INNER JOIN insurance i1 
    ON vehicles.ID = i1.vehicle_ID 
    LEFT OUTER JOIN insurance i2 
    ON i1.vehicle_ID = i2.vehicle_ID 
    AND i2.expire > i1.expire
    WHERE i2.id IS NULL
    AND i1.expire >= NOW()
    

    最初のクエリと非常によく似ており、それ以降の保険の有効期限に対して左外部結合を実行し、i2.idがNULLであることをチェックして、それ以降の有効期限が見つからないことを確認します。次に、見つかった有効期限をチェックして、有効期限が切れていないことを確認します。 。



    1. PostgreSQLの「groupby」クエリで文字列フィールドの文字列を連結するにはどうすればよいですか?

    2. SQLエラーの読み取りと解釈の方法

    3. 配列をAJAXを介してphpからjavascriptに渡す

    4. PDO fetchall()のパフォーマンスに関する考慮事項?