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

多対多および多対多の交差点

    問題を解決する場合は、4つのテーブルをそれらのリンク列(特に外部キー)で結合します。 )次に、HAVINGのサブクエリ 各人のリストにあるアイテムの数を数える句。これを試してみてください

    SET @personID := 1;
    
    SELECT  c.name
    FROM    Inventory a
            INNER JOIN Foods b
                ON a.food_id = b.id
            INNER JOIN Stores c
                ON a.store_id = c.id
            INNER JOIN Lists d
                ON d.food_id = b.id
    WHERE   d.person_id = @personID
    GROUP BY c.name
    HAVING   COUNT(DISTINCT d.food_id) =
         (
            SELECT COUNT(*)
            FROM Lists
            WHERE person_ID = @personID
         )
    

    SQLFiddleデモ



    1. 管理者–Linux用の高度なWebベースのデータベース管理ツール

    2. 行の各列の最後の既知の値を取得します

    3. SQL ServerでのOBJECTPROPERTY()のしくみ

    4. SSMSの結果をグリッドに-CRLFはコピー/貼り付けで保存されません-より良いテクニックはありますか?