ACC_Entwickler
Aktiver Benutzer
- Beiträge
- 28
Hallo allerseits,
ich habe folgendes Problem: Ich soll Daten aus mehreren Tabellen auslesen und diese verknüpfen: Das funktioniert bis auf einen Punkt.
Hier mein Code:
SELECT x.WO,
x.Item,
x.[P/N],
x.[S/N],
x.[Part Beschreibung],
x.[Einzel EK],
x.Anzahl,
x.[Einzel VK],
x.[WQ] AS WQ,
x.[Gesamt VK],
x.Split,
x.Fertigstellung
FROM(
SELECT RIGHT(Format(CAST(A.counter AS int), '##-####'), 7) AS WO,
--IIF(B.Nr=W.Item, W.Item,'0') AS Item,
W.Item AS Item,
W.[P/N],
W.[S/N],
--IIF(A.[Rechnungs-Nr] IS NULL,Im.Artikelname,'') AS [Part Beschreibung],
AA.aaName AS [Part Beschreibung],
W.[EK-Preis] AS [Einzel EK],
W.[Anzahl Ausgänge] AS Anzahl,
W.[VK] AS [Einzel VK],
IIF(B.Memo NOT LIKE '%WQ%', NULL, Format(CAST(SUBSTRING(B.[Memo], CHARINDEX('WQ20', B.[Memo]) + 4, 7) AS int), '##-####')) AS WQ,
W.[VK] * W.[Anzahl Ausgänge] AS [Gesamt VK],
W.Nr AS Split,
B.[F-Datum] AS Fertigstellung
FROM SOdata.dbo.Aufträge AS A LEFT JOIN
SOdata.dbo.Beanstandungen AS B ON A.Auftragsnummer = B.Auftragsnummer LEFT JOIN
SOdata.dbo.Warenbuchung AS W ON A.Auftragsnummer = W.Auftragsnummer LEFT JOIN
SOdata.dbo.ArtikelAll AS AA ON W.[P/N] = AA.aaUsePN
WHERE ((A.counter IS NOT NULL) AND
(A.OrderType = 'Auftrag') AND
(CHARINDEX('Auftrag', A.OrderType) = 1)) AND
(CHARINDEX('deleted', A.Auftragnr_neu) = 0 OR (CHARINDEX('deleted', A.Auftragnr_neu) IS NULL)) AND
(B.Nr = W.Item )-- OR W.Item ='0')
)x
WHERE WO = '22-5127'
GROUP BY x.WO,
x.Item,
x.[P/N],
x.[S/N],
x.[Part Beschreibung],
x.[Einzel EK],
x.[Anzahl],
x.[Einzel VK],
x.[Gesamt VK],
x.Fertigstellung,
x.Split,
x.WQ
ORDER BY Item asc
Problem: in der Spalte W.Item gibt es Items mit der Nummer 0, in der Tabelle B.Nr tauchen diese nicht auf. Ich möchte diese Items aber trotzdem anzeigen lassen. Ohne das fett markierte im Code funktioniert die Verknüpfung 1a, bis auf die fehlenden Einträge mit der 0. Allerdings sobald ich die OR W.Item ='0' Clausel mit einbinde fügt er nicht die fehlenden 9 Einträge hinzu sondern fügt stattdessen über 500 Einträge hinzu mit einer 0. Ich glaube das sind dann alle Einträge der gesamten Datenbank, welche mit einer 0 versehen sind und nicht nur die dem Auftrag zugewiesenen.
Meine Frage lautet also, was muss ich in die OR Bedingung noch weiter einbinden, sodass mir nur die Einträge mit 0 zu dem zugehörigen Auftrag bekomme?
Über Anregung und Hilfe freue ich mich und bedanke mich im Vorraus!
MfG
Philipp
ich habe folgendes Problem: Ich soll Daten aus mehreren Tabellen auslesen und diese verknüpfen: Das funktioniert bis auf einen Punkt.
Hier mein Code:
SELECT x.WO,
x.Item,
x.[P/N],
x.[S/N],
x.[Part Beschreibung],
x.[Einzel EK],
x.Anzahl,
x.[Einzel VK],
x.[WQ] AS WQ,
x.[Gesamt VK],
x.Split,
x.Fertigstellung
FROM(
SELECT RIGHT(Format(CAST(A.counter AS int), '##-####'), 7) AS WO,
--IIF(B.Nr=W.Item, W.Item,'0') AS Item,
W.Item AS Item,
W.[P/N],
W.[S/N],
--IIF(A.[Rechnungs-Nr] IS NULL,Im.Artikelname,'') AS [Part Beschreibung],
AA.aaName AS [Part Beschreibung],
W.[EK-Preis] AS [Einzel EK],
W.[Anzahl Ausgänge] AS Anzahl,
W.[VK] AS [Einzel VK],
IIF(B.Memo NOT LIKE '%WQ%', NULL, Format(CAST(SUBSTRING(B.[Memo], CHARINDEX('WQ20', B.[Memo]) + 4, 7) AS int), '##-####')) AS WQ,
W.[VK] * W.[Anzahl Ausgänge] AS [Gesamt VK],
W.Nr AS Split,
B.[F-Datum] AS Fertigstellung
FROM SOdata.dbo.Aufträge AS A LEFT JOIN
SOdata.dbo.Beanstandungen AS B ON A.Auftragsnummer = B.Auftragsnummer LEFT JOIN
SOdata.dbo.Warenbuchung AS W ON A.Auftragsnummer = W.Auftragsnummer LEFT JOIN
SOdata.dbo.ArtikelAll AS AA ON W.[P/N] = AA.aaUsePN
WHERE ((A.counter IS NOT NULL) AND
(A.OrderType = 'Auftrag') AND
(CHARINDEX('Auftrag', A.OrderType) = 1)) AND
(CHARINDEX('deleted', A.Auftragnr_neu) = 0 OR (CHARINDEX('deleted', A.Auftragnr_neu) IS NULL)) AND
(B.Nr = W.Item )-- OR W.Item ='0')
)x
WHERE WO = '22-5127'
GROUP BY x.WO,
x.Item,
x.[P/N],
x.[S/N],
x.[Part Beschreibung],
x.[Einzel EK],
x.[Anzahl],
x.[Einzel VK],
x.[Gesamt VK],
x.Fertigstellung,
x.Split,
x.WQ
ORDER BY Item asc
Problem: in der Spalte W.Item gibt es Items mit der Nummer 0, in der Tabelle B.Nr tauchen diese nicht auf. Ich möchte diese Items aber trotzdem anzeigen lassen. Ohne das fett markierte im Code funktioniert die Verknüpfung 1a, bis auf die fehlenden Einträge mit der 0. Allerdings sobald ich die OR W.Item ='0' Clausel mit einbinde fügt er nicht die fehlenden 9 Einträge hinzu sondern fügt stattdessen über 500 Einträge hinzu mit einer 0. Ich glaube das sind dann alle Einträge der gesamten Datenbank, welche mit einer 0 versehen sind und nicht nur die dem Auftrag zugewiesenen.
Meine Frage lautet also, was muss ich in die OR Bedingung noch weiter einbinden, sodass mir nur die Einträge mit 0 zu dem zugehörigen Auftrag bekomme?
Über Anregung und Hilfe freue ich mich und bedanke mich im Vorraus!
MfG
Philipp
Zuletzt bearbeitet: