Murphy9904
Lt. Junior Grade
- Registriert
- Mai 2007
- Beiträge
- 344
Hi,
Ich bräuchte Hilfe für eine SQL Abfrage und zwar:
Ich möchte alle Artikel haben die in den letzten 4 Monaten nicht verkauft wurden.
Das funtktioniert super so: (dauert weniger als ne Sekunde)
Select * from [XXX].[dbo].[Article]
where ArticleID not in(
SELECT distinct(a.ArticleID)
FROM [XXX].[dbo].[Article] as a
join [XXX].[dbo].ShipmentItem as si on a.ArticleID = si.ArticleID
join [XXX].[dbo].Shipment as s on s.ShipmentID = si.ShipmentID
where s.CreateDate > DATEADD(MONTH ,-4 , GETDATE()) )
Wenn ich jetzt aber das ganze um eine Where erweitert dauert es endlos lange:
Select * from [XXX].[dbo].[Article]
where ArticleID not in(
SELECT distinct(a.ArticleID)
FROM [XXX].[dbo].[Article] as a
join [XXX].[dbo].ShipmentItem as si on a.ArticleID = si.ArticleID
join [XXX].[dbo].Shipment as s on s.ShipmentID = si.ShipmentID
where s.CreateDate > DATEADD(MONTH ,-4 , GETDATE()) )
where Stock > 0
Ich hab so das Gefühl das er jetzt für jede Zeile anfängt das "SubQuery" auszuführen - warum denn?
das kann doch nicht so schwer sein
Wenn ihr noch Fragen habt fragt bitte, ich bin leider nicht so der Held im erklähren deshalb hab ich auch ein Bild gemalt
Würde mich freuen wenn mir jemand helfen kann.
Dankeschön
LG Murphy
Ich bräuchte Hilfe für eine SQL Abfrage und zwar:
Ich möchte alle Artikel haben die in den letzten 4 Monaten nicht verkauft wurden.
Das funtktioniert super so: (dauert weniger als ne Sekunde)
Select * from [XXX].[dbo].[Article]
where ArticleID not in(
SELECT distinct(a.ArticleID)
FROM [XXX].[dbo].[Article] as a
join [XXX].[dbo].ShipmentItem as si on a.ArticleID = si.ArticleID
join [XXX].[dbo].Shipment as s on s.ShipmentID = si.ShipmentID
where s.CreateDate > DATEADD(MONTH ,-4 , GETDATE()) )
Wenn ich jetzt aber das ganze um eine Where erweitert dauert es endlos lange:
Select * from [XXX].[dbo].[Article]
where ArticleID not in(
SELECT distinct(a.ArticleID)
FROM [XXX].[dbo].[Article] as a
join [XXX].[dbo].ShipmentItem as si on a.ArticleID = si.ArticleID
join [XXX].[dbo].Shipment as s on s.ShipmentID = si.ShipmentID
where s.CreateDate > DATEADD(MONTH ,-4 , GETDATE()) )
where Stock > 0
Ich hab so das Gefühl das er jetzt für jede Zeile anfängt das "SubQuery" auszuführen - warum denn?
das kann doch nicht so schwer sein
Wenn ihr noch Fragen habt fragt bitte, ich bin leider nicht so der Held im erklähren deshalb hab ich auch ein Bild gemalt
Würde mich freuen wenn mir jemand helfen kann.
Dankeschön
LG Murphy