sql >> Database teknologi >  >> RDS >> Mysql

mange-til-mange og mange-til-mange kryds

Hvis jeg skulle løse problemet, vil jeg forbinde de fire tabeller med deres linkkolonne (specifikt fremmednøglerne ) derefter en underforespørgsel på HAVING klausul for at tælle antallet af elementer på listen for hver person. Prøv dette,

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 Demo



  1. 2 måder at se, om forældede funktioner stadig bliver brugt i en SQL Server-instans

  2. Sådan registrerer du, om en værdi indeholder mindst et numerisk ciffer i MariaDB

  3. hvordan man bruger PDO-forbindelsesobjekt i forskellige filer

  4. MySQL Connection vil ikke lukke