sql >> Databáze >  >> RDS >> Mysql

křižovatky many-to-many a many-to-many

Pokud bych měl problém vyřešit, spojím čtyři tabulky s jejich propojovacím sloupcem (konkrétně cizí klíče ) pak poddotaz na HAVING klauzule k počítání počtu položek na seznamu pro každou osobu. Zkuste to,

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
     )

Ukázka SQLFiddle



  1. Aktualizujte klienta C# při každé aktualizaci databáze

  2. Jak lze v Oracle zřetězit více řádků do jednoho bez vytvoření uložené procedury?

  3. Jak mohu snadno převést aplikaci Django z mySQL na PostgreSQL?

  4. Jak nejlépe využít funkci komentářů v MySQL