MS-SQL - Result-Set im Query durchlaufen

fossybeer

Mitglied
Moin zusammen!

In meiner Datenbank sind Artikel und Unterartikel (und Unterunterartikel, aber max. 4 Ebenen) gespeichert. Nun soll ich mit Reporting-Services eine Abfrage erstellen, die ALLE einem Ausgangs-Artikel (z.B. Nr. 123) zugehörigen Unterartikel auswirft. Das geht gut mit:

Code:
SELECT Artikelname FROM Artikelliste WHERE Artikelnummer = 
(SELECT Unterartikelnummer FROM Artikelliste WHERE Artikelnummer = 123 )
Dies zeigt mir den Unterartikel zum Artikel 123. Wunderbar.

ABER: Das ganze funktioniert nicht mehr, wenn die 2. SELECT-Anweisung mehr als ein Ergebnis hat. Dies kommt vor, wenn der übergeordnete Artikel aus mehreren Unterartikel besteht (z.B. Artikel = Fahrrad, Unterartikel = Lenker, Räder, Klingel etc.). Kann ich im Query irgendwie das gesamte Result-Set des 2. Selects abarbeiten?

Gibt es vielleicht andere Ansätze für die Problemlösung?

PS Die 4 möglichen Ebenen behandle ich alle wie oben - je mehr Ebenen, desto mehr subselects. Die angezeigten Ebenen kann der Nutzer durch den Parameter @Ebenen [1..4] bestimmen

Code:
SELECT case when @Ebenen>3 then Artikelname else NULL end
FROM Artikelliste WHERE Artikelnummer = 
(SELECT Unterartikelnummer FROM Artikelliste WHERE Artikelnummer = 
(SELECT Unterartikelnummer FROM Artikelliste WHERE Artikelnummer =
(SELECT Unterartikelnummer FROM Artikelliste WHERE Artikelnummer = 123 )))
 
Hi,

Du suchst IN():

SQL:
SELECT Artikelname FROM Artikelliste 
   WHERE Artikelnummer IN 
      (
         SELECT Unterartikelnummer 
            FROM Artikelliste 
            WHERE Artikelnummer = 123 
      )

Du könntest auch mal schauen, ob Nested Sets nicht was für Dich wäre.

LG
 
Ach, so ein automatischer Dank ist viel zu professionell!

VIELEN VIELEN DANK für die schnelle und richtige Lösung!

Ich nutze die gesparte Lebenszeit, um ein Bier auf kuddeldaddeldu und dieses Forum zu zwitschern!

:D Prost :D
 
Zurück