Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
799 Beiträge
 
Delphi 10.4 Sydney
 
#1

union auf eine Spalte

  Alt 21. Mär 2019, 13:07
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,
ich habe eine große Abfrage, in der ich:
ArtikelNr-----Kundbedarf-----Lagerbestand abfrage.
Dabei sind Kundenbedarf und Lagerbstand in zwei unterschiedlichen Tabellen.
Delphi-Quellcode:
select k.ArtikelNr, l.Bestand from KdBedarf k
left join LBestand l on l.ArtikelNr=k.ArtikelNr
where k.Lieferdatum<Date_Add(now(), interval 1000 day)
(Original-Abfrage ist ein bißchen komplizierter...)
Das klappt auch wunderbar.
Jetzt gibt es aber Fälle, bei denen es keinen Kundenbedarf gibt, aber Lagerbestand. Diese Fälle möchte ich auch in dem Ergbenis haben.

Daher wollte ich mit einem UNION arbeiten, denn die where-Bedingung mit dem Lieferdatum schließt alle Datensätze ohne Kundenbedarf aus...
Delphi-Quellcode:
union
select ArtikelNr, 0, Bestand from LBestand
Das klappt auch. Allerdings bekomme ich durch die zweite Abfrage alle Artikel und ihren Lagerbestand angezeigt, und die , die auch einen Kundenbedarf haben jetzt doppelt.
Mit einem Group by kann ich nicht arbeiten, denn die ArtikelNr kommen bei den Kundenbedarfen mehr als einmal vor...

Gibt es eine Möglichkeit, ein UNION auf eine Spalte zu begrenzen?
Wenn ich das richtig verstanden habe, dann eliminiert UNION nur die Datensätze, die alle Felder identisch haben. Gibt es eine Möglichkeit, um Datensätze beim UNION zu unterbinden, wenn die ArtikelNr schon vorhanden ist?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat