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

Returner overordnede poster med underordnede poster, der er lig med specifikke værdier OG hvor det samlede sæt af underordnede poster for en given forælder er lig med en specifik værdi

Forespørgslen, som du bad om den, er:

SELECT  parent.item1, parent.item2, parent.index
FROM    parent
INNER JOIN
        child
ON      child.index = parent.index
GROUP BY
        parent.item1, parent.item2, parent.index
HAVING  SUM(CASE WHEN child.value IN (1111111, 2222222) THEN 1 ELSE 0 END) = 2
        AND COUNT(*) <= 2

Hvis du bare vil sikre dig, at børn matcher alle værdierne i IN liste og ingen ikke på listen, brug denne (i SQL Server )

SELECT  *
FROM    parent p
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    (
                SELECT  value
                FROM    child c
                WHERE   c.index = p.index
                ) c
        FULL JOIN
                (
                SELECT  11111111 AS value
                UNION ALL
                SELECT  22222222
                ) q
        ON      c.value = q.value
        WHERE   c.value IS NULL OR q.value IS NULL
        )



  1. MySQLi Query returnerer værdi i tilfælde af Select uden matchende rækker

  2. PostgreSQL - Installation af JDBC-driver

  3. Lagring af Lat Lng-værdier i MySQL ved hjælp af Spatial Point Type

  4. Opret forespørgsel for at få optælling af uafsluttede opkald