Workaround for HAVING
Hallo,
gegeben seien folgende zwei Tabellen:
CREATE TABLE ek (nr INT AUTO_INCREMENT, ok BOOLEAN, PRIMARY KEY (nr));
CREATE TABLE lager (nr INT, menge INTEGER);
INSERT INTO ek VALUES (null, TRUE);
INSERT INTO ek (null, FALSE);
INSERT INTO lager VALUES (1, 100);
INSERT INTO lager VALUES (1, 200);
INSERT INTO lager VALUES (1, -300);
INSERT INTO lager VALUES (2, 100);
INSERT INTO lager VALUES (2, 200);
INSERT INTO lager VALUES (2, -50);
INSERT INTO lager VALUES (3, 400);
Logisch hätte ich gerne ein:
SELECT l.nr, SUM(menge) FROM ek, lager l
WHERE ek.nr=l.nr AND (!ok OR SUM(menge)>0)
GROUP BY l.nr
aber SUM(...) kann man nicht in der WHERE-Clause verwenden. Syntaktisch muss ich also ein
SELECT l.nr, SUM(menge), ok FROM ek, lager l WHERE ek.nr=l.nr
GROUP BY l.nr
HAVING !ok OR SUM(menge)>0
machen.
Damit HAVING das ok findet, muss es als Spalte erscheinen. Doch das würde ich gerne vermeiden.
Eine Lösung wäre über eine VIEW. Aber lässt sich das SUM(menge) nicht auch durch ein Subselect
ersetzen? Bisher ist mir das nicht gelungen.
Gruß
Jörg
Subject
Views
Written By
Posted
Workaround for HAVING
2138
July 13, 2011 08:17AM
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion
of Oracle or any other party.