Join Problem: Einträge in einer Tabelle vorhanden sind, aber nicht in einer anderen
am 28.02.2006 16:55:46 von Sebastian WittekHallo ich habe folgendes Problem (MySQL-Version: 4.0.25-standard)
Ich möchte eine Art Einkaufsliste erstellen.
Dabei gibt es verschiedene Benutzer die für verschiedene Abteilungen Artikel
von einer Liste auf einen Bestellzettel ziehen können.
Ein Artikel, der bereits auf der Bestelliste dieser Abteilung liegt, darf in
der Auswahl nicht mehr angezeigt werden.
Tabelle Bestellungen:
+---+---------+------+---------+--------+----+
|ID |ArtikelID|Anzahl|BereichID|PersonID|....|
+---+---------+------+---------+--------+----+
| 1| 1| 5| 1| 1|....|
+---+---------+------+---------+--------+----+
| 2| 2| 10| 1| 1|....|
+---+---------+------+---------+--------+----+
| 3| 10| 200| 1| 1|....|
+---+---------+------+---------+--------+----+
Tabelle Artikel:
+----------+-----------+----+
|ArtikelID |Bezeichnung|....|
+----------+-----------+----+
| 1| Artikel A|....|
+----------+-----------+----+
| 2| Artikel B|....|
+----------+-----------+----+
|..........|...........|....|
+----------+-----------+----+
| 10| Artikel X|....|
+----------+-----------+----+
| 11| Artikel Y|....|
+----------+-----------+----+
Angenommen der Benutzer stellt jetzt die Einkaufsliste für Bereich 1
zusammen. Dann möchte ich als Ergebnis von SELECT nur ArtikelID 11 bekommen,
bzw. alle Artikel die in Tabelle Artikel drin sind, aber noch nicht in
Tabelle Bestellungen mit BereichID 1.
Wenn ein Benutzer die Liste für Bereich 2 zusammenstellt, müssten alle
Artikel kommen, da ja noch keine Bestellung für BereichID 2 existiert.
Mein ursprüngliches SELECT ohne Beachtung der BereichID war:
select a.ArtikelID, a.Bezeichnung from Artikel
a LEFT join Bestellungen b ON a.ArtikelID = b.ArtikelID
WHERE b.ArtikelID is NULL
Jetzt war mein Gedanke, dass man das Ganze auf einen Bereich beschränken
kann:
select a.ArtikelID, a.Bezeichnung from Artikel
a LEFT join Bestellungen b ON a.ArtikelID = b.ArtikelID
WHERE b.ArtikelID is NULL AND b.BereichID = 1
Das geht aber natürlich nicht, weil als BereichID ja nur "NULL" rauskommt.
Was muss ich denn ändern, um zum gewünschten Ergebnis zu kommen?
Vielen Dank fürs Durchlesen und Mitdenken ;-)
Sebastian