Ich habe ein Problem. Ich soll eine Übersicht aus einer riesigen Datenbank erstellen, die zurzeit per Hand gemacht wird. Der SQL-Code steht unten.
Ich versteh nicht viel von SQL-Befehlen, versteh aber was da bisher steht. Mein Problem ist, dass ich auf der einen Seite BEstellungen habe und auf der anderen Seite Rechnungen und die sollen einander zugeordnet werden. Das Problem ist, dass nicht zu allen Bestellungen bereits Rechnungen vorhanden sind und mit diesen SQL Befehlen nur die Daten eingetragen werden, die schon Rechnungen haben. Kurz gesagt das Problem ist, dass die Zeile EKRechnungsPosDetail.BestellNr = Bestellpositionen.BestellNr mir alle Positionen rausschmeist, wo die BestellNr nicht in EKRechnungsPosDetail eingetragen ist (Hintergrund: weil keine Rechnung eingegeben ist).
Mit schwebt auch so in etwa im Kopf rum, dass das was mit left join oder sowas zu tun hat, ich hab aber keine Ahnung, wie ich das anwende. Was dabei rauskommen soll ist, dass alle Bestellungen aufgeführt sind und bei denen, wo eine REchnung hinterlegt ist, diese dazugefügt wird.
Bitte helft mir, es ist dringend.
Nun also der Quelltext:
SELECT
Bestellkoepfe.DatumBestellung AS 'Datum',
Bestellkoepfe.BestellNr,
Bestellkoepfe.Referenz, Bestellkoepfe.Name1 AS 'Lieferant',
Bestellpositionen.ArtikelbezLieferant AS 'Artikel', Bestellpositionen.DatumWE AS 'Liefertermin',
Lieferpositionen.ChargenNr AS 'WE', EKRechnungskoepfe.Referenz AS 'Rg',
Bestellpositionen.Ursprungsmenge AS 'Menge', Bestellpositionen.PreisProEinheit AS 'E-Preis',
Bestellpositionen.WarenwertFremd AS 'Nettowert', Bestellpositionen.UStSchluessel
FROM
quarisPROMIXDaten.dbo.Bestellkoepfe Bestellkoepfe,
quarisPROMIXDaten.dbo.Bestellpositionen Bestellpositionen,
quarisPROMIXDaten.dbo.EKRechnungskoepfe EKRechnungskoepfe,
quarisPROMIXDaten.dbo.EKRechnungsPosDetail EKRechnungsPosDetail,
quarisPROMIXDaten.dbo.EKRechnungspositionen EKRechnungspositionen,
quarisPROMIXDaten.dbo.Lieferpositionen Lieferpositionen
WHERE
Bestellkoepfe.BestellNr = Bestellpositionen.BestellNr AND
Bestellkoepfe.BestellNr = Lieferpositionen.BestellNr AND
Bestellpositionen.BestellNr = Lieferpositionen.BestellNr AND EKRechnungsPosDetail.BestellNr = Bestellpositionen.BestellNr AND
EKRechnungsPosDetail.EKRechnungsNr = EKRechnungskoepfe.EKRechnungsNr AND
EKRechnungspositionen.EKRechnungsNr = EKRechnungskoepfe.EKRechnungsNr AND
EKRechnungspositionen.EKRechnungsNr = EKRechnungsPosDetail.EKRechnungsNr AND
EKRechnungsPosDetail.Bestellposition = Bestellpositionen.Bestellposition AND
Lieferpositionen.Bestellposition = EKRechnungsPosDetail.Bestellposition AND
Lieferpositionen.Bestellposition = Bestellpositionen.Bestellposition AND
EKRechnungsPosDetail.Jahr = EKRechnungskoepfe.Jahr AND EKRechnungsPosDetail.EKRechnungsposition =
EKRechnungspositionen.EKRechnungsposition AND
((Bestellkoepfe.DatumBestellung>{ts '2009-01-01 00:00:00'}))
Ich versteh nicht viel von SQL-Befehlen, versteh aber was da bisher steht. Mein Problem ist, dass ich auf der einen Seite BEstellungen habe und auf der anderen Seite Rechnungen und die sollen einander zugeordnet werden. Das Problem ist, dass nicht zu allen Bestellungen bereits Rechnungen vorhanden sind und mit diesen SQL Befehlen nur die Daten eingetragen werden, die schon Rechnungen haben. Kurz gesagt das Problem ist, dass die Zeile EKRechnungsPosDetail.BestellNr = Bestellpositionen.BestellNr mir alle Positionen rausschmeist, wo die BestellNr nicht in EKRechnungsPosDetail eingetragen ist (Hintergrund: weil keine Rechnung eingegeben ist).
Mit schwebt auch so in etwa im Kopf rum, dass das was mit left join oder sowas zu tun hat, ich hab aber keine Ahnung, wie ich das anwende. Was dabei rauskommen soll ist, dass alle Bestellungen aufgeführt sind und bei denen, wo eine REchnung hinterlegt ist, diese dazugefügt wird.
Bitte helft mir, es ist dringend.
Nun also der Quelltext:
SELECT
Bestellkoepfe.DatumBestellung AS 'Datum',
Bestellkoepfe.BestellNr,
Bestellkoepfe.Referenz, Bestellkoepfe.Name1 AS 'Lieferant',
Bestellpositionen.ArtikelbezLieferant AS 'Artikel', Bestellpositionen.DatumWE AS 'Liefertermin',
Lieferpositionen.ChargenNr AS 'WE', EKRechnungskoepfe.Referenz AS 'Rg',
Bestellpositionen.Ursprungsmenge AS 'Menge', Bestellpositionen.PreisProEinheit AS 'E-Preis',
Bestellpositionen.WarenwertFremd AS 'Nettowert', Bestellpositionen.UStSchluessel
FROM
quarisPROMIXDaten.dbo.Bestellkoepfe Bestellkoepfe,
quarisPROMIXDaten.dbo.Bestellpositionen Bestellpositionen,
quarisPROMIXDaten.dbo.EKRechnungskoepfe EKRechnungskoepfe,
quarisPROMIXDaten.dbo.EKRechnungsPosDetail EKRechnungsPosDetail,
quarisPROMIXDaten.dbo.EKRechnungspositionen EKRechnungspositionen,
quarisPROMIXDaten.dbo.Lieferpositionen Lieferpositionen
WHERE
Bestellkoepfe.BestellNr = Bestellpositionen.BestellNr AND
Bestellkoepfe.BestellNr = Lieferpositionen.BestellNr AND
Bestellpositionen.BestellNr = Lieferpositionen.BestellNr AND EKRechnungsPosDetail.BestellNr = Bestellpositionen.BestellNr AND
EKRechnungsPosDetail.EKRechnungsNr = EKRechnungskoepfe.EKRechnungsNr AND
EKRechnungspositionen.EKRechnungsNr = EKRechnungskoepfe.EKRechnungsNr AND
EKRechnungspositionen.EKRechnungsNr = EKRechnungsPosDetail.EKRechnungsNr AND
EKRechnungsPosDetail.Bestellposition = Bestellpositionen.Bestellposition AND
Lieferpositionen.Bestellposition = EKRechnungsPosDetail.Bestellposition AND
Lieferpositionen.Bestellposition = Bestellpositionen.Bestellposition AND
EKRechnungsPosDetail.Jahr = EKRechnungskoepfe.Jahr AND EKRechnungsPosDetail.EKRechnungsposition =
EKRechnungspositionen.EKRechnungsposition AND
((Bestellkoepfe.DatumBestellung>{ts '2009-01-01 00:00:00'}))
Comment