MySQL Forums
Forum List  »  German

SELECT über zwei Tabellen
Posted by: J?rg B?chner
Date: July 19, 2012 12:21PM

Hallo,

ich habe eine Tabelle für ein Lager (Eingänge)
CREATE TABLE lager (lagerNr CHAR(10), menge INT(11));
INSERT INTO lager VALUES ('A1', 15000);
INSERT INTO lager VALUES ('B1', 5000);

und eine für den Ausgang
CREATE TABLE ausgang (lagerNr CHAR(10), menge INT(11));
INSERT INTO ausgang VALUES ('A1', 10000);
INSERT INTO ausgang VALUES ('A1', 700);
INSERT INTO ausgang VALUES ('B1', 100);

Wenn ich jetzt wissen möchte, was noch auf dem Lager ist, mache ich das mit
SELECT lagernr, SUM(menge-
		    (SELECT SUM(menge) FROM ausgang WHERE lagerNr=l.lagerNr)) AS m
FROM lager l GROUP BY lagernr HAVING m>0;
+---------+------+
| lagernr | m    |
+---------+------+
| A1      | 4300 |
| B1      | 4900 |
+---------+------+
Jetzt kann es allerdings sein, dass Lagernummern mehrfach vorkommen, also beispielsweise 'B1'
INSERT INTO lager VALUES ('B1', 6000);
Dann wird bei der Bestandsabfrage der Ausgang für B1 doppelt erfasst (kartesisches Produkt) und ich erhalte das falsche Ergebnis
+---------+-------+
| lagernr | m     |
+---------+-------+
| A1      |  4300 |
| B1      | 10800 |
+---------+-------+
Korrekt wäre für B1: 10900.
Wie lässt sich das beheben?

Options: ReplyQuote


Subject
Views
Written By
Posted
SELECT über zwei Tabellen
1707
July 19, 2012 12:21PM
972
July 21, 2012 02:59PM
916
August 06, 2012 10:53AM
1091
August 06, 2012 12:59PM
1075
August 06, 2012 11:57PM
1071
August 07, 2012 01:07AM
1021
August 07, 2012 09:50AM
1153
August 07, 2012 03:33PM


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.