Guten Abend,
ich habe eine Frage zu einer SQl Abfrage. Zum Hintergrund, es handelt sich hierbei um eine Abfrage von einem Warenwirtschaftsprogramm für das Exportieren von Lieferscheinen.
Meine Frage ist, wie man in SQL eine Art optimale WHERE Anweisung realisieren kann.
Konkret geht es um die Tabelle: "Artalter".
In dieser Tabelle werden kundenspezifische Bestellnummern hinterlegt.
Es soll nun also zu einem Artikel die dazugehörige Kundenbestellnummer ermittelt werden. Diese muss aber nicht existieren und ist somit optimal.
So wie die SQL Anweisung momentan ist, werden nur Datensätze geliefert, bei denen ein Artikel eine Kundenbestellnummer hat.
Wie müsste der Befehl abgeändert werden, dass wenn in der Tabelle Artalter kein passender Eintrag steht, trotzdem der Datensatz ausgegeben wird und die Kundenbestellnummer einfach leer ausgegeben wird.
Zusammengefasst, wenn in einer Tabelle in einer verschachtelten Anweisung kein passender Datensatz durch die Bedingung existiert, gebe das angeforderte Feld leer aus, ansonsten gebe das gefundene Feld zurück.
Ich hoffe ich konnte das Problem trotz der komplexität verständlich beschreiben.
ich habe eine Frage zu einer SQl Abfrage. Zum Hintergrund, es handelt sich hierbei um eine Abfrage von einem Warenwirtschaftsprogramm für das Exportieren von Lieferscheinen.
Meine Frage ist, wie man in SQL eine Art optimale WHERE Anweisung realisieren kann.
Konkret geht es um die Tabelle: "Artalter".
In dieser Tabelle werden kundenspezifische Bestellnummern hinterlegt.
Es soll nun also zu einem Artikel die dazugehörige Kundenbestellnummer ermittelt werden. Diese muss aber nicht existieren und ist somit optimal.
So wie die SQL Anweisung momentan ist, werden nur Datensätze geliefert, bei denen ein Artikel eine Kundenbestellnummer hat.
Wie müsste der Befehl abgeändert werden, dass wenn in der Tabelle Artalter kein passender Eintrag steht, trotzdem der Datensatz ausgegeben wird und die Kundenbestellnummer einfach leer ausgegeben wird.
Zusammengefasst, wenn in einer Tabelle in einer verschachtelten Anweisung kein passender Datensatz durch die Bedingung existiert, gebe das angeforderte Feld leer aus, ansonsten gebe das gefundene Feld zurück.
Code:
SELECT Beleg.Belegnummer, Beleg.Datum, Beleg.Vorname, Beleg.Name, Beleg.Strasse, Beleg.Land, Beleg.Plz, Beleg.Ort, Kunden.Nummer, Kunden.Telefon1, Beleg.FreierText1, Beleg.FreierText2, Beleg.LText1, BelegP.Posnummer, BelegP.Artikelnummer, BelegP.Bestellnummer, Artalter.Bestellnummer AS Kundenbestellnummer, BelegP.Bezeichnung, BelegP.Menge
FROM Beleg, BelegP, Kunden, Artalter
WHERE Beleg.Belegtyp='L'
AND Kunden.Nummer = Beleg.Adressnummer AND Beleg.Datum Between :'Anfangsdatum' and :'Enddatum'
AND BelegP.Belegnummer = Beleg.Belegnummer
AND Beleg.Lager = '4'
AND Artalter.Artikelnummer = BelegP.Artikelnummer
AND Artalter.Id = 'AK'
AND Artalter.AlternativArtikel = Kunden.Nummer
Ich hoffe ich konnte das Problem trotz der komplexität verständlich beschreiben.
Last edited by a moderator: