[MySQL] Abfrage über zwei Tabellen

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich steh grad ziemlich aufm Schlauch und bekomm eine Abfrage einfach nicht hin.

Ich habe zwei Tabellen: die eine heißt Bestellungen, die zweite Artikel.

In Bestellungen gibt es folgende Werte:

bestell_id, datum, bestelldatum, bestellsumme

In Artikel gibt es folgende Werte:

artikel_id, bestell_id, anzahl, bezeichnung, lieferdatum

So, nun habe ich folgendes vor: ich möchte mir alle Bestellungen anzeigen lassen, in denen Artikel nur teilweise geliefert wurden.

Und jetzt kommt mir einfach nicht der Geistesblitz... also in der Theorie müsste es so gehen: ich gehe die Tabelle Artikel durch und wähle alle Artikel aus, in denen das lieferdatum gefüllt ist (wenn nicht geliefert wurde, ist der Wert 0). Im nächsten Schritt suche ich die Artikel raus, die die gleiche bestell_id wie die eben gefundenen Artikel haben, aber deren lieferdatum 0 ist.

Ich steh grad echt aufm Schlauch und weiß überhaupt nicht, wie ich anfangen soll mit dem Befehl... vielleicht kann mir jemand einen Denkanstoß geben?
 
ungetestet:
SQL:
SELECT
	bestell_id
FROM
	artilkel AS a
GROUP BY
	bestell_id
HAVING
	COUNT(DISITNCT  IF(lieferdatum=0, 'A', 'B')) = 2
Ich gruppiere nach der Belegnummer.
Im HAVING zähle ich alle eindeutigen Werten und zwar wie folgt. Ist das leiferdatum 0 , wird ein A gezählt. Ist es ungleich 0, ein B. Mit dem COUNT(DISITINCT ....) gibt es so also nur die Zahlen 1 oder 2. und die 2er wollen wir haben. Also diejenigen, die 0-er Datums und gültige Datums haben.
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank, das funktioniert. Mit Having und einem If in der Abfrage hab ich bisher noch nicht gearbeitet.

Hab erst gedacht, es funktioniert nicht, aber das war ein Fehler von mir: hatte in meiner DB keine Bestellungen, auf die das Gesuchte überhaupt zutrifft ^^

Ich danke dir vielmals
 
Zurück