MySQL Forums
Forum List  »  German

Workaround for HAVING
Posted by: J?rg B?chner
Date: July 13, 2011 08:17AM

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

Options: ReplyQuote


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.