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

Probleme mit Joins

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von forunaminora, 20 Juni 2015.

  1. forunaminora

    forunaminora Neuer Benutzer

    Hallo Community :)

    ich bräuchte eure Hilfe bei meiner SQL Hausaufgabe :D. Wir haben sozusagen nicht mal Unterricht darüber bekommen, wie SQL funktioniert, sondern nur ein Aufgabenblatt und die dazugehörigen Befehle etc. sollen wir uns übers Internet selber aneignen. Hat auch ganz gut funktioniert bis auf dass es bei den Joins bei mir noch nicht GANZ klick gemacht hat :)
    [​IMG]
    Das sind 5 Tabellen, die ich laut Aufgabe erstellen soll und mit den angegebenen Daten füllen soll.

    jetzt habe ich bei folgenden Aufgaben Probleme:

    [​IMG] [​IMG]
    Die SQL Abfrage soll dann jeweils die Tabelle ausspucken, die unter der Frage gezeigt ist.
    bei der
    h) weiß ich einfach nicht, wie ich es in einem Befehl ausdrücken kann, dass man schaut bei welchen Buch ID's die Verfasser ID von Klaus-Peter Andorka angegeben ist. Ich glaube das ich eine Subafrage brauche, aber da krieg ichs dann mit der Syntax irgendwie nie richtig hin oder krieg ein leeres Resultat zurück :(
    i) Das kreig ich glaub ich größtenteils hin, ist ja die Tabelle "Ausleihe" mit den Spalten "name" von Tabelle Fahrer und "titel" von Tabelle Buch. Wie lautet jetzt allerdings der befehl das er in der Spalte Vorhanden alle "0" zu einem "nein" und die "1" zu einem ja macht? Ich weiß, dass man mit SELECT "rueckgabe" AS "Vorhanden" den ausgegebenen Spaltennamen ändern kann, aber wie ändere ich die Werte?
    l) & m) hier habe ich keine Ahnung wie ich vorgehen muss. Ganz bestimmt irgendwie mit COUNT() oder SUM() aber bin da noch auf kein vernünftiges Ergebnis gekommen :(

    Könnt ihr mir bitte helfen das hinzukriegen? :) Ich weiß es sind pro Aufgabe nur ein paar Zeilen Code, aber wie schon gesagt mir fehlt da noch ein bisschen die Logik, da ich ein absoluter Anfänger bin und das zum allerersten mal mache. Über Denkanstöße oder den Aufbau des Codes den ich haben muss wäre ich schon sehr dankbar :)
    Anbei lade ich auch mal meine Lösungen zu den anderen Aufgabenteilen hoch, die hab ich auch schon probiert und funktionieren alle :). Falls ich irgendwas aber doch total komisch oder doppet und dreifach gemacht habe und es viel einfacher und logischer geht bin ich da natürlich auch über Verbesserungsvorschläge dankbar
    Danke an alle schonmal!!
     

    Anhänge:

    • DBS4.txt
      Dateigröße:
      1,5 KB
      Aufrufe:
      1
  2. akretschmer

    akretschmer Datenbank-Guru

    Die Lösung nennt sich JOIN. Und jetzt gehst Du los und googelst danach. Lösungen findest Du definitiv sogar bereits in diesem Forum.
     
  3. forunaminora

    forunaminora Neuer Benutzer

    Wenn du dir meinen Beitrag richtig durchgelesen hättest dann würdest du nicht so eine Antwort schreiben! Ich sagte, dass ich weiß, dass ich Joins benutzen muss und das ich auch das Prinzip so ungefähr verstehe, nur das mir eben noch so ein kleiner Denkanstoß fehlt, auf meine Aufgabenstellung bezogen, dass ich es besser nachvollziehen und verstehen kann. Deine Antwort hilft mir leider nicht, denn ich weiß sowohl welchen Befehl ich dafür brauche, als auch das Google mir da weiterhelfen kann, was ich auch schon getan habe. Wie schon gesagt bei mir hats nur noch nicht 100% klick gemacht.
     
  4. Distrilec

    Distrilec Datenbank-Guru

    Ein Excel-Beispiel:
    Du hast zwei Datenblätter. Du hast einen Spalte in Datenblatt A die einen (meistens eindeutigen) Wert von Datenblatt B enthält... Du machst in Datenblatt A in einer neuen Spalte einen SVERWEIS auf diesen (meistens eindeutigen) Wert und holst dir eine Spalte aus Datenblatt B.

    Der einzige Unterschied ist, dass ein Join automatisch alle Spalten von der neuen Tabelle zugänglich macht.
     
  5. Distrilec

    Distrilec Datenbank-Guru

    Hier mal die Aufgabe h) in zwei möglichen Varianten. Abhängig davon was du als deine "Basis" ansiehst...
    Code:
    Select b.bid
          ,b.titel
    From   verfasser v
    
    Left   Join buchverfasser bv
    On     bv.vid = v.vid
    
    Left   Join buch b
    On     b.bid = bv.bid
    
    Where  v.name = 'Klaus-Peter Andorka';
    Code:
    Select b.bid
          ,b.titel
    From   buch b
    
    Inner  Join buchverfasser bv
    On     bv.bid = b.bid
    
    Inner  Join verfasser v
    On     v.vid = bv.vid
    
    Where  v.name = 'Klaus-Peter Andorka';
     
    ukulele und forunaminora gefällt das.
  6. forunaminora

    forunaminora Neuer Benutzer

    Vielen Dank Distrilec! :)

    Aufgabe i) hab ich jetzt auch selbst gelöst:
    Code:
    SELECT a.fid, f.name, a.bid, b.titel, a.datum, if( a.rueckgabe =0, 'nein', 'ja' ) AS Vorhanden
    FROM Ausleihe a
    INNER JOIN Fahrer f ON a.fid = f.fid
    INNER JOIN Buch b ON a.bid = b.bid
    Probiere mich jetzt an l) & m) :)
     
    Zuletzt von einem Moderator bearbeitet: 21 Juni 2015
  7. forunaminora

    forunaminora Neuer Benutzer

    Alles gelöst!! 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