Probleme mit Joins

forunaminora

Neuer Benutzer
Beiträge
4
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 :)
11rgiyr.png

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:

2z556ag.png
2hfnz9k.png

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
    1,5 KB · Aufrufe: 1
Werbung:
Die Lösung nennt sich JOIN. Und jetzt gehst Du los und googelst danach. Lösungen findest Du definitiv sogar bereits in diesem Forum.
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.
 
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.
 
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';
 
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 bearbeitet von einem Moderator:
Werbung:
Zurück
Oben