MS-SQL Maximal X Datensätze pro Artikel

Va7e

Mitglied
Hi,

ich habe eine Tabelle, in der ich Artikelbilder eintragen kann (Artikelnummer und Pfad zum Bild). Maximal sind drei dieser Bilder erlaubt. Es kommt jedoch trotzdem manchmal dazu, dass pro Artikel mehr, als diese drei Verlinkungen gespeichert werden.

Das Problem bei der ganzen Sache ist, dass ich beim Hochladen der Bilder eben nur maximal die drei Bilder pro Artikel auswählen darf.

Wie kann ich einen SQL-Befehl so bauen, indem ich pro Artikel maximal drei Einträge selektieren kann? Mit TOP(3) kann ich natürlich nicht arbeiten, da in der Tabelle logischerweise mehrere Artikelbilderverlinkungen vorhanden sind.

Ich habe es mit ROW_NUMBER versucht, aber ich darf in der Ausgabe des Befehls nur zwei Spalten angezeigt haben (Artikelnummer und Pfad), da das Ergebnis für eine INSERT-Anweisung benutzt wird.

Ist ziemlich schwer, aber vielleicht weiß jemand eine Lösung :-)

MfG

Va7e
 
Ich kenne MS-SQL nicht.
Aber die ROW_NUMBER, müsste doch nur ins WHERE, nicht in den SELECT-Teil.
 
Hallo Va7e,

das Problem müsste eigentlich wie folgt zu lösen sein:

SQL:
select Artikel, Bilderpfad from
(
	select 
	Artikel, 
	Bilderpfad, 
	ROW_NUMBER() 
	over (partition by Artikel order by Artikel, Bilderpfad) as RowNumber 
	from TabelleA
) as a
where RowNumber <= 3


Mit

SQL:
select Artikel, Bilderpfad from
(
	select 
	Artikel, 
	Bilderpfad, 
	ROW_NUMBER() 
	over (partition by Artikel order by Artikel, Bilderpfad) as RowNumber 
	from TabelleA
) as a
where RowNumber > 3

können dann die Datensätze ausgegeben werden, die aufgrund der Beschränkung nicht hochgeladen werden konnten.

Gruß Frame
 
Zuletzt bearbeitet von einem Moderator:
Zurück