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

Problem bein einer Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von weggli1, 21 Mai 2013.

  1. weggli1

    weggli1 Benutzer

    Hallo zusammen

    Ich habe ein Problem, beim schreiben einer Abfrage und hoffe, jemand kann mir helfen.

    Es geht um eine einzelne Tabelle mit Büchern, mit den Attributen:

    Titel
    Seitenzahl
    Herausgeber
    ...

    Ich möchte nun alle Herausgeber mit mindestens 2 Büchern, welche mehr als 500 Seiten haben abfragen.

    Die Count-klausel sowie der Verglich (gleicher Herausgeber) macht mir jedoch probleme, bis jetzt habe ich sowas wie:

    SELECT Herausgeber
    FROM Db_buecher
    WHERE COUNT(

    SELECT titel
    FROM Db_buecher
    WHERE seitenzahl >= 500
    AND herausgeber=herausgeber)
    >=2

    aber das klappt nicht (es ist mir klar, dass es falsch ist, aber ich weiss nicht, wie ich es besser machen kann...).

    Liebe Grüsse und danke im voraus!
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Code:
    test=*# select * from weggli1 ;
     titel  | seiten | herausgeber
    --------+--------+-------------
     titel1 |    400 | h1
     titel2 |    200 | h1
     titel3 |    600 | h2
     titel4 |    100 | h3
     titel5 |    100 | h3
    (5 rows)
    
    test=*# select herausgeber, count(*), sum(seiten) from weggli1 group by 1 having count(*) >= 2 and sum(seiten) >= 500;
     herausgeber | count | sum
    -------------+-------+-----
     h1          |     2 | 600
    (1 row)
    
    Andreas
     
    weggli1 gefällt das.
  3. weggli1

    weggli1 Benutzer


    Dankeschön, das sieht schon super aus, aber wie mache ich das, wenn die einzelnen bücher 500 seiten oder mehr haben sollen?

    Also:

    titel | seiten | herausgeber
    --------+--------+-------------
    titel1 | 400 | h1
    titel2 | 200 | h1
    titel3 | 600 | h2
    titel4 | 500 | h2
    titel5 | 100 | h3
    titel6 | 100 | h3
    (6 rows)

    Und das Ergebnis wäre schlicht:

    h2
     
  4. akretschmer

    akretschmer Datenbank-Guru

    so ähnlich:

    Code:
    test=*# select * from weggli1 ;
     titel  | seiten | herausgeber
    --------+--------+-------------
     titel1 |    400 | h1
     titel2 |    200 | h1
     titel3 |    600 | h2
     titel4 |    100 | h3
     titel5 |    100 | h3
     titel6 |    500 | h2
    (6 rows)
    
    test=*# select herausgeber from (select * from weggli1 where seiten >= 500) foo group by 1 having count(*) >= 2 and sum(seiten) >= 500;
     herausgeber
    -------------
     h2
    (1 row)
    
     
    weggli1 gefällt das.
  5. weggli1

    weggli1 Benutzer

    Super, so hats geklappt!

    Vielen vielen Dank!
     
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