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

SQL Statement :S Hilfe

Dieses Thema im Forum "PostgreSQL" wurde erstellt von uebertreiber, 1 Januar 2014.

  1. uebertreiber

    uebertreiber Neuer Benutzer

    hi ich hab mal ne frage ich hab ein problem mit einem SQL Statement... unzwar soll ich das hier ausgeben lassen nur weiß ich leider nicht genau wie, ich denke man müsste es mit dem AVG() machen oder ?
    Kann mir da vllt jemand helfen ?

    Welchen Durchschnittspreis haben CDs, auf denen Musiker aus mindestens 3 Nationen spielen

    Tabelle 1: Name = lied
    Spalten:
    lied_id
    medium_id
    lied_titel
    laenge

    Tabelle 2: Name = medium
    Spalten:
    medium_id
    medium_titel
    medium_art
    preis
    erscheinungsjahr

    Tabelle 3: Name = musiker
    Spalten:
    person_id
    role
    lied_id
    gruppe

    Tabelle 4 Name = person
    Spalten:
    person_id
    name
    natinalitaet




    wäre euch sehr dankbar wenn ihr mir helfen könntet [​IMG]

    SELECT AVG(preis) FROM medium;
    damit lasse ich den Durchscnittspreis angeben aber ich weiß leider nicht wie ich die nationalität miteinbinden kann :/
     
  2. akretschmer

    akretschmer Datenbank-Guru

    AVG() paßt schon. Aber erst einmal die CD's ermitteln, die in die Auswahl kommen. Vereinfachte und von Dir etwas abweichende Tabellen:

    Code:
    test=*# \d musiker
      Table "public.musiker"
      Column  |  Type  | Modifiers
    ---------------+---------+-----------
     id  | integer | not null  
     nationalitaet | integer |
    Indexes:
      "musiker_pkey" PRIMARY KEY, btree (id)
    Referenced by:
      TABLE "lied" CONSTRAINT "lied_musiker_fkey" FOREIGN KEY (musiker) REFERENCES musiker(id)
    
    test=*# \d lied
      Table "public.lied"
     Column  |  Type  | Modifiers
    ---------+---------+-----------
     id  | integer | not null
     musiker | integer |
    Indexes:
      "lied_pkey" PRIMARY KEY, btree (id)
    Foreign-key constraints:
      "lied_musiker_fkey" FOREIGN KEY (musiker) REFERENCES musiker(id)
    Referenced by:
      TABLE "medium_lied" CONSTRAINT "medium_lied_lied_fkey" FOREIGN KEY (lied) REFERENCES lied(id)
    
    test=*# \d medium
      Table "public.medium"
     Column |  Type  | Modifiers
    --------+---------+-----------
     id  | integer | not null
     preis  | integer |
    Indexes:
      "medium_pkey" PRIMARY KEY, btree (id)
    Referenced by:
      TABLE "medium_lied" CONSTRAINT "medium_lied_medium_fkey" FOREIGN KEY (medium) REFERENCES medium(id)
    
    test=*# \d medium_lied
      Table "public.medium_lied"
     Column |  Type  | Modifiers
    --------+---------+-----------
     id  | integer | not null
     medium | integer |
     lied  | integer |
    Indexes:
      "medium_lied_pkey" PRIMARY KEY, btree (id)
    Foreign-key constraints:
      "medium_lied_lied_fkey" FOREIGN KEY (lied) REFERENCES lied(id)
      "medium_lied_medium_fkey" FOREIGN KEY (medium) REFERENCES medium(id)
    
    Folgendes SELECT liefert Dir erst einmal die Medium-ID, den Preis und die Anzahl an Nationalitäten:

    Code:
    test=*# select m.id, m.preis, count(distinct mu.nationalitaet) from medium_lied ml left join medium m on ml.medium=m.id left join lied l on ml.lied=l.id left join musiker mu on l.musiker=mu.id group by m.id,m.preis;
    
    Das sollte jetzt reichen, daß Du deine Hausaufgaben hinbekommst, oder?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Wie ist eigentlich der Stand? Problem gelöst?
     
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