sql >> Databasteknik >  >> RDS >> Oracle

Oracle får rader som exakt matchar värdelistan

Prova detta:

SELECT OrderID 
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID 
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)

Idén, i ett nötskal, är följande:

  • Räkna hur många OrderDetailTable-rader som matchar OrderedTable efter ItemID,
  • och jämför sedan det med det totala antalet artikel-ID från OrderedTable.

Om dessa två siffror är lika, "innehåller" det givna OrderID alla ItemIDs. Om den ena är mindre än den andra, finns det minst ett artikel-ID som inte finns i det angivna order-ID.

Beroende på dina primärnycklar, DISTINCT kanske inte är nödvändigt (även om det inte gör ont).



  1. PHP &SQL Server - fältnamn trunkerade

  2. Uppdaterar Salesforce från Oracle®

  3. Tillagda databasposter raderas efter omstart av appen (heroku/SQLAlchemy)

  4. Mallmönster och modifierare för numerisk formatering i PostgreSQL