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

Oracle получава редове, които точно съвпадат със списъка със стойности

Опитайте това:

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

Идеята накратко е следната:

  • Пребройте колко реда OrderDetailTable съответстват на OrderedTable по ItemID,
  • и след това сравнете това с общия брой ItemID от OrderedTable.

Ако тези две числа са равни, даденият OrderID "съдържа" всички ItemID. Ако единият е по-малък от другия, има поне един ItemID, който не се съдържа в дадения OrderID.

В зависимост от вашите първични ключове, DISTINCT може да не е необходимо (въпреки че не боли).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - връща множество преброявания като една заявка

  2. Как можете да разберете кои колони са неизползвани във ALL_TAB_COLS?

  3. Деактивирайте тригерите и активирайте отново тригерите, но междувременно избягвайте промяна на таблицата

  4. Как да коригирате грешката „Няма диалектно съпоставяне за тип JDBC:-1“ в java

  5. Картографирането на разделени обекти води до неочаквани резултати с база данни на Oracle