kompliziertes SQL-Statement

Arndtinho

Erfahrenes Mitglied
Guten Morgen,

ich habe zwei Tabellen: Warengruppe und Artikel.
Zu jeder Warengruppe gehören n-viele Artikel. Nun möchte ich mit einer Abfrage die neuesten, maximal 5 Artikel pro Warengruppe selektieren (inklusive Warengruppe).
Das Ergebnis sollte ungefähr so aussehen:
Code:
A1 Warengruppe 1
A2 Warengruppe 1
A3 Warengruppe 1
A4 Warengruppe 1
A5 Warengruppe 1
A1 Warengruppe 2
A2 Warengruppe 2
A3 Warengruppe 2
A1 Warengruppe 3
A2 Warengruppe 3
Kann mir jemand einen Denkanstoss geben?

Viele Grüße
Arndtinho
 
Du kannst das ganze wie folgt umsetzen, ist T-SQL:

Code:
SELECT ArtID, ArtDate
  FROM Artikel
 WHERE ArtDate IN
  (SELECT TOP 5 WarenDate
     FROM Warengruppe
    WHERE WarenID = ArtID
    ORDER BY WarenDate DESC)
 ORDER BY Artikel.ArtID, Artikel.ArtDate DESC

Edit:
Ok sehe gerade du brauchst es nach Artikel + Warengruppe, kannst es aber einfach anpassen.
 
@Adi | tmine
Na da bekomme ich doch nur fünf geliefert, oder nicht? Weil sich doch das Limit auf das gesamte SQL-Statement bezieht. Ausserdem wird doch dann der Aspekt "max. 5 Artikel/Warengruppe" ausser Acht gelassen.

@Konstantin
Danke. Das muss ich mal testen. Aber erstmal nachlesen was "TOP" macht.

Gruß
Arndtinho
 
Zuletzt bearbeitet:
Siehe mein Beispiel, wenn ich das Query so ausführen würde, wie es gerade steht, würde die Datenausgabe so aussehen:

Code:
ArtID ArtDate
A1      2007-11-18 00:00:00.000
A1      2007-11-17 00:00:00.000
A1      2007-11-16 00:00:00.000
A1      2007-11-15 00:00:00.000
A1      2007-11-14 00:00:00.000
A2      2007-11-14 00:00:00.000
A2      2007-11-13 00:00:00.000
A2      2007-11-12 00:00:00.000
A2      2007-11-11 00:00:00.000
A2      2007-11-10 00:00:00.000
etc.
 
@Adi | tmine
Na da bekomme ich doch nur fünf geliefert, oder nicht? Weil sich doch das Limit auf das gesamte SQL-Statement bezieht. Ausserdem wird doch dann der Aspekt "max. 5 Artikel/Warengruppe" ausser Acht gelassen.

Gruß
Arndtinho

Oh sorry hab das pro Wahrengruppe überlesen.
Sollte aber mit der oben genannten Lösung schon machbar sein ..
 
Kann es sein das es "TOP" in MySQL nihct gibt? Hatte leider im Ausgangsposting vergessen zu erwähnen, dass es sich um MySQL handelt. Sorry.

Gruß
Arndtinho
 
Zurück