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

Beschränkungen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von TeJay, 1 Januar 2013.

  1. TeJay

    TeJay Neuer Benutzer

    Hallo Leute :)

    Bitte helft mir bei dieser Aufgabe ...

    "Beschränken Sie die Abfrage auf die Leser, die mehr als ein Buch ausgeliehen haben."

    select * from t_verleih;

    +---------------+-------+------------+
    | isbn | leser | datum |
    +---------------+-------+------------+
    | 1-254-56649-0 | 1 | 2001-11-25 |
    | 1-234-56789-0 | 1 | 2001-11-25 |
    | 1-285-54709-0 | 2 | 2001-11-27 |
    | 1-285-54709-0 | 3 | 2001-11-29 |
    | 1-444-46232-0 | 4 | 2001-03-23 |
    | 1-37-473275-0 | 4 | 2001-03-23 |
    | 2-423-421252- | 3 | 2001-11-29 |
    +---------------+-------+------------+
    7 rows in set (0,00 sec)
    Ich komme nun nicht mehr weiter, ich hab folgendes versucht:
    mysql> select leser, count(*) from t_verleih where count(*) > 1 group by leser;
    Danke für jede Antwort :)
    TeJay
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Immerhin scheinst ja selber etwas versucht zu haben, um Deine Hausaufgabe zu lösen, da will ich mal nicht so sein ;-)
    Die Richtung stimmt grob, aber nur grob. Um das Resultat einer Aggregatfunktion im WHERE auszuwerten brauchst Du HAVING:

    Code:
    test=*# select * from foo;
     id
    ----
      1
      2
      2
      3
      3
      3
    (6 rows)
    
    Time: 0,137 ms
    test=*# select id from foo group by id having count(*) > 1 ;
     id
    ----
      3
      2
    (2 rows)
    

    Sollte exakt so auf Deine Aufgabe und MySQL übertragbar sein (ich arbeite mit PG), die genaue Anpassung überlasse ich Dir zur Übung.


    Andreas
     
  3. akretschmer

    akretschmer Datenbank-Guru


    Weil mir das grad so auffällt: falls man mit ISBN-Nummern arbeitet und vermeiden will, ungültige ISBN-Nummern in der DB zu speichern, könnte die Prüfung auf valide ISBN auch der Datenbank überlassen ;-)

    Dazu braucht man allerdings PostgreSQL und ein Modul, welches aber in einer Standard-Installation mit dabei ist: isn.

    Demo:

    Code:
    test=# create extension isn;
    CREATE EXTENSION
    Time: 177,629 ms
    test=*# select isbn('1-444-46232-0');
    ERROR:  invalid check digit for ISBN number: "1-444-46232-0", should be 6
    LINE 1: select isbn('1-444-46232-0');
                        ^
    Time: 0,220 ms
    test=*# select isbn('1-444-46232-6');
        isbn
    ---------------
    1-4444-6232-6
    (1 row)
     
    Time: 0,161 ms
    
    Nach der Installation der Extension steht ein zusätzlicher Datentyp isbn zur Verfügung. Man hat nun alle Möglichkeiten der DB, damit zu arbeiten. Z.B. Prüfen auf Validität. Die Doku dazu enthält weitere Anwendungsfälle.


    Andreas
     
    ukulele gefällt das.

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