Vinnaren i pepparkakshustävlingen!
2009-11-25, 15:18
  #1
Medlem
c-dogs avatar
Hej!

Hur kan man skriva om denna sqlsats så att man ersätter EXISTS med en IN operator?

SELECT o_orderpriority, COUNT(*) AS order_count
FROM orders
WHERE o_orderdate >= DATE(‘1993-07-01’)
AND o_orderdate < DATE(‘1993-07-01’) + 3 MONTHS
AND EXISTS
(SELECT *
FROM lineitem
WHERE l_orderkey = o_orderkey AND
l_commitdate < l_receiptdate)
GROUP BY o_orderpriority
ORDER BY o_orderpriority
Citera
2009-11-25, 16:56
  #2
Medlem
c-dogs avatar
löste detta själv

SELECT o_orderpriority, COUNT(*) AS order_count
FROM orders
WHERE o_orderdate
BETWEEN ’1993-07-01’ AND ’1993-10-01’
AND o_orderkey IN
(SELECT l_orderkey FROM lineitem
WHERE l_commitdate < l_receiptdate)
GROUP BY o_orderpriority
ORDER BY o_orderpriority
Citera
2009-11-25, 17:40
  #3
Medlem
c-dogs avatar
MEN!

Om man nu skulle vilja få en INNER JOIN mellan tabellerna orders och lineitem..
Hur går man till väga för att skriva detta??
Är oerhört tacksam för svar!
Citera
2009-11-26, 01:14
  #4
Moderator
Protons avatar
Här har du ett liknande problem fast med LEFT JOIN, borde ge dej en liten hjälp på traven?

https://www.flashback.org/showthread.php?t=1041493

Eller den här?
https://www.flashback.org/showthread.php?t=1052071
Citera
2009-12-15, 01:05
  #5
Medlem
kh31d4rs avatar
om du mot förmodan skulle vilja söka efter trådar i forumet som rör EXISTS och INNER JOIN, skulle du då söka på "SQL fråga" och gå igenom alla resultat, eller skulle du söka på något som innehöll just EXISTS eller INNER JOIN?

Ungefär lika nyttig blir din egen rubrik när någon annan har samma problem.
Citera
2009-12-16, 20:42
  #6
Medlem
ojns avatar
Väl rutet kh31d4r. Uppdaterade den värdelösa rubriken.

/Moderator
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback