Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SELECT-Abfrage

Dieses Thema im Forum "Andere Datenbankserver" wurde erstellt von Julia_xx3, 17 Juli 2020.

  1. Julia_xx3

    Julia_xx3 Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. Julia_xx3

    Julia_xx3 Neuer Benutzer

    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.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. Julia_xx3

    Julia_xx3 Neuer Benutzer

    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?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
    Julia_xx3 gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden