[SQL] Verständnisfrage

Timboy893

Cadet 3rd Year
Registriert
Sep. 2015
Beiträge
61
Hallo allerseits,
und zwar lerne ich momentan fürs Studium SQL, und habe gerade eine Übungsaufgabe bearbeitet die mir etwas kopfzerbrechen bereitet. Evtl. kann mir ja jemand weiter helfen. Zum Verständnis habe ich mal das Datenbankmodell um das es sich dreht mit rein kopiert.
1623430357137.png

Nun soll dazu folgende Abfrage gemacht werden: Eine Liste der Räume in der die Klasse ´10a´ Unterricht hat.
Da ich mir nicht ganz sicher war wie das am besten zu lösen ist, habe ich mal in die Musterlösung geschaut und die hat dann für mein kopfzerbrechen gesorgt.
Und zwar steht da folgendes: SELECT raum.nummer FROM klasse JOIN unterricht ON klasse.id = unterricht.k_id JOIN raum ON unterricht.r_id = raum.id WHERE klasse.name = ´10a´;

An sich macht das ja auch Sinn, nur eine Sache ist mir sofort ins Auge gefallen, die meiner Meinung nach mit den Grundlagen die ich in der Vorlesung gelernt und gerade nochmal recherchiert habe, nicht übereinstimmt. Und zwar muss ja die Spalte die nach SELECT angegeben wird, in der Tabelle die nach FROM angegeben ist vorhanden sein, da ansonsten ein leeres Ergebnis zurück gegeben wird.
"raum.nummer" ist ja ganz eindeutig in der Tabelle raum vorhanden und nicht in der Tabelle klasse.

Es wäre super falls mir jemand bei dieser Frage weiterhelfen könnte, da ich mir ziemlich sicher bin das ich irgendwo einen Denkfehler habe, da ja wohl kaum die Musterlösung dermaßen falsch sein kann.
Ich freue mich auf eure Rückmeldungen.

LG, Tim
 
im Zweifelfall einfach mal die sachen abtippen und am PC testen.
bzw. was sagen deine Kommilitonen dazu?
 
  • Gefällt mir
Reaktionen: ella_one
Du kannst alle Spalten aus allen Tabellen, die im Join vorkommmen abfragen, der Join ergibt quasi eine neue, zusammengesetzte Tabelle.
 
  • Gefällt mir
Reaktionen: Timboy893, kartoffelpü, elnino460 und 2 andere
Und zwar muss ja die Spalte die nach SELECT angegeben wird, in der Tabelle die nach FROM angegeben ist vorhanden sein
Das ist nicht richtig.

Durch den Join verlängerst du praktisch die Anzahl der Spalten und kannst dir natürlich dann auch Spalten aus den gejointen Tabellen anzeigen lassen.

Man muss halt bei den 1-n oder n-m beziehungen daran denken, dass man Tabellen per joine je nachdem nicht nur um Spalten erweitert, sondern auch im Gegensatz zur Tabelle welche direkt beim "from" steht mehr Zeilen erhält.

Beispiel:
Tabelle Klasse enthält 40 Klassen. Jede Klasse hat 6 zeilen in der Unterrichtstabelle, dann erhältst du durch den Join 6*40 Zeilen mit den Spalten aus Tabelle Klasse und Unterricht.
 
  • Gefällt mir
Reaktionen: Timboy893
Vielen Dank für die schnellen Rückmeldungen an alle! Das beispiel von henpara hat meinen Denkfehler glaube ich gut verdeutlicht, die 1-n, n-m Beziehungen zu beachten im Bezug auf die joins ist natürlich essenziell um die Abfrage zu verstehen.
 
Zurück
Oben