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

ピボットにすべてのIDがある行を選択します

    havingを追加できます c.idのすべてのグループに4つすべてのcp.product_idがあることを確認するためのクエリの句:

    SELECT
        c.id as company_id
    FROM
        `companies` as c
        LEFT JOIN `company_products` cp ON cp.company_id = c.id
    WHERE
        c.id IN (8, 13)
        AND cp.product_id IN (1,2,4,8)
    GROUP BY
        c.id
    HAVING COUNT(DISTINCT cp.product_id) = 4;    
    

    サンプルSQLフィドル

    商品の詳細も必要な場合は、上記のクエリを派生テーブルとして使用し、商品テーブルと結合できます。




    1. 間違った例外をキャッチする

    2. 接続が失われた/切断されたトランザクションでのMySQLロールバック

    3. グループごとの最後の行を取得

    4. タイムゾーンの問題にどのように対処しますか?