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

SQL Vyberte pouze řádky, kde existuje více vztahů

Toto se nazývá Relační dělení

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(*) = 2

AKTUALIZACE 1

pokud jedinečné omezení nebylo vynuceno na prop_id pro každé parent_id , DISTINCT je v tomto případě potřeba.

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(DISTINCT b.prop_id) = 2


  1. Jak mohu uniknout hranatým závorkám v klauzuli LIKE?

  2. Správné použití transakcí na serveru SQL Server

  3. Dotazování více databází najednou

  4. Aktualizace tabulky MySQL na základě jiné hodnoty tabulky