Mysql
 sql >> база данни >  >> RDS >> Mysql

много към много и много към много кръстовища

Ако трябваше да реша проблема, ще присъединя четирите таблици с тяхната свързваща колона (по-специално външните ключове ) след това подзаявка към 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
     )

SQLPiddle Демо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL продължава да се срива

  2. Грешка в незаконен микс от съпоставяне в MySql

  3. Как да съхраня UTC ISO8601 дата в MySQL база данни?

  4. Грешка при вмъкване на PHP/SQL при използване на именувани заместители

  5. Инструкция на MySQL PREPARE в съхранени процедури