sql >> Database >  >> RDS >> Mysql

veel-op-veel en veel-op-veel kruispunten

Als ik het probleem zou oplossen, voeg ik de vier tabellen samen met hun linkkolom (specifiek de externe sleutels ) dan een subquery op de HAVING clausule om het aantal items op de lijst voor elke persoon te tellen. Probeer dit eens,

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. juiste manier om gegevens in te voegen met id als auto-increment in mysqli

  2. Algemene logboeken en foutlogboeken inschakelen in AWS RDS

  3. SQL-query om database in MySQL te verwijderen

  4. php 5.x 7.x, ssl pdo-fout:Peer-certificaat CN=`someName' kwam niet overeen met verwacht CN='someIP'