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

Fragen zu SQL Statements

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von werdas34, 2 Februar 2019.

  1. werdas34

    werdas34 Benutzer

    Hallo,

    ich habe kein allgemeines Datenbank-Thema gefunden, deswegen schreibe ich es hier. Sollte dies doch woanders besser passen, dann verschiebt es einfach.

    Ich schreibe demnächst eine Prüfung in DB.
    Wir bekommen die Tabellendefinitionen(keine Datensätze) und entsprechende Aufgaben. Dazu müssen wir das auf Papier lösen.
    Ich habe mal so eine Aufgabe gelöst und meine Bitte wäre es das ihr es euch mal kurz anschaut und sagt was richtig/falsch ist und warum?

    Code:
    Buch: Buch_Nr (PK), Autor, Titel
    Leser: Leser_Nr (PK), Leser_Name, Geburtsdatum
    Ausleihe: Nr_Buch (FK, PK), Nr_Leser (FK, PK), Ausleihdatum (PK), Rückgabedatum, Ausleihdauer
    
    a) alle ältere Leser ausgeben (vor 1.1.1950 geboren)
    select Leser_Name from Leser
    where Geburtsdatum < 1-1-1950;
    
    b) Name der Leser die in einem Ausleihvorgang des Buches geschrieben vom Autor "Sedgewick" vermerkt sind
    select Leser_Name from Leser
    join Ausleihe on Leser_Nr = Nr_Leser
    join Buch on Buch_Nr = Nr_Buch
    where Autor = 'Sedgewick';
    
    c) Titel aller Bücher mit deren Gesamtausleihdauer
    select Titel, sum(Ausleihdauer)  from Ausleihe
    join Buch on Buch_Nr = Nr_Buch
    group by Titel;
    
    d) Namen der Leser, deren durchschnittliche Ausleihdauer kürzer ist als die des Leser mit der Nummer 2
    select Leser_Name, avg(Ausleihdauer) from Ausleihe
    join Leser on Leser_Nr = Nr_Leser
    group by Leser_Name
    having avg(Ausleihdauer) < (select avg(Ausleihdauer) from Ausleihe
                join Leser on Leser_Nr = Nr_Leser
                where Leser_Nr = 2);
    
    e) Löschen aller Ausleihvorgänge des Lesers "Meier" und Löschen des Lesers "Meier" selbst
    delete from Ausleihe
    where Nr_Leser in (select Leser_Nr from Leser
            where Leser_Name = 'Meier');
    
    delete from Leser
    where Leser_Name = 'Meier';
    
    Danke
    MfG werdas34
     
  2. akretschmer

    akretschmer Datenbank-Guru

    grob gelesen sieht es nicht wirklich falsch aus. Das datums format in a) ist nicht sql-konform, und so wie Du es schreibst rechnet er 1-1-1950, was -1950 ergibt.
    Warum installierst Dir nicht schnel z.B. ein PostgreSQL, legst die Tabellen an und probierst Deine SQL's?
     
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