SELECT-Abfrage

Julia_xx3

Neuer Benutzer
Beiträge
3
Hallo,
ich hab ein Problem. Ich möchte aus meiner SQL Datenbank jedes Beispielsweise Schuhe herausfiltern. In dieser ist jeder Schuh mit jedem Laden und Preis kombiniert.

select top 3 schuhe, laden, preis
FROM tblSchuhe
ORDER BY schuhe, preis

Ich möchte später damit weiter rechnen. Aber erstmal muss meine Abfrage mir für alle Schuhe die 3 besten Preise, mit dem zugehörigen Laden herausfiltern.
Über eine Antwort würde ich mich freuen

Liebe Grüße
Julia
 
Werbung:
Ist das jetzt eine Stellenanzeige, oder warum steht das hier bei Jobs?

Um die Frage fachlich beantworten zu können, solltest Du zuerst einmal versuchen rauszubekommen, welche Datenbank Du verwendest. Mit diesem Wissen findest Du sicherlich das passende Unterforum hier.
 
Die Frage war doch nur, wie ich die SELECT-Abfrage lösen kann wenn ich von jeder Kategorie einer Tabelle die besten drei herausfiltern möchte.
 
Hat Deine Tabelle eine Spalte mit dem Namen 'Schuhe'? Möchtest Du da nur die 3 billigsten ? Oder hast Du verschiedene Produkte (oder wie bei Dir zuletzt Kategorien) und je Produktart (Schuhe, Mülleimer, Fahradreifen) jeweils die 3 billigsten/teuersten? Das wird nicht klar. Und Du bist damit im falschen Unterforum. Bekommst Du noch raus, WELCHES Datenbanksystem (Oracle, PostgreSQL, M$SQL, Karteikarten) Du benutzt? Davon hängt auch noch ab, wie das nötige SQL auszusehen hat.
 
Tabelle Schuhe -> tblSchuhe
und verschiedene Produkte und ich möchte zu jedem die drei billigsten Preise. Beispielsweise zu
Schuh1 Preis1
Schuh1 Preis2
Schuh1 Preis4
Schuh2 Preis5
Schuh2 Preis6
Schuh2 Preis7
kann man das so ausgeben oder muss ich das mit einer WHILE-Schleife lösen die jeden Schuh separat nach ihren top 3 abfragt?
 
Werbung:
na dann:

Code:
test=*# create table julia (schuh text, preis int);
CREATE TABLE
test=*# with x as (select 'schuh'||s::text, random()*100::int from generate_series(1,5) s cross join generate_series(1,6)x order by 1) insert into julia select * from x;
INSERT 0 30
test=*# select * from julia ;
 schuh  | preis
--------+-------
 schuh1 |    38
 schuh1 |    31
 schuh1 |    60
 schuh1 |    53
 schuh1 |     3
 schuh1 |    11
 schuh2 |    73
 schuh2 |    41
 schuh2 |    37
 schuh2 |    37
 schuh2 |    58
 schuh2 |    61
 schuh3 |    20
 schuh3 |    85
 schuh3 |    28
 schuh3 |    29
 schuh3 |    34
 schuh3 |    49
 schuh4 |    33
 schuh4 |     4
 schuh4 |    45
 schuh4 |     6
 schuh4 |     0
 schuh4 |     2
 schuh5 |    10
 schuh5 |    87
 schuh5 |    33
 schuh5 |    45
 schuh5 |    73
 schuh5 |    58
(30 rows)
test=*# with temp as (select *, rank() over (partition by schuh order by preis) from julia) select schuh, preis from temp where rank <= 3 ;
 schuh  | preis
--------+-------
 schuh1 |     3
 schuh1 |    11
 schuh1 |    31
 schuh2 |    37
 schuh2 |    37
 schuh2 |    41
 schuh3 |    20
 schuh3 |    28
 schuh3 |    29
 schuh4 |     0
 schuh4 |     2
 schuh4 |     4
 schuh5 |    10
 schuh5 |    33
 schuh5 |    45
(15 rows)
 
Zurück
Oben