Join oder nicht Join *grübel*

Der Held

Erfahrenes Mitglied
Hi Leute,
brauche Hilfe, mir raucht der Kopp und ich komm net weiter :{}

Ich habe drei Tabellen:

CREATE TABLE fakultaeten (
ID_Fakultaeten int(11) NOT NULL auto_increment,
Name varchar(255) default NULL,
PRIMARY KEY (ID_Fakultaeten),
KEY ID_Fakultaeten (ID_Fakultaeten)
) TYPE=MyISAM;

CREATE TABLE studiengaenge (
ID_Studiengaenge int(11) NOT NULL auto_increment,
Name varchar(255) default NULL,
PRIMARY KEY (ID_Studiengaenge),
KEY ID_Studiengaenge (ID_Studiengaenge)
) TYPE=MyISAM;

CREATE TABLE t_fakultaeten (
ID_link int(11) NOT NULL auto_increment,
ID_Fakultaeten int(11) default NULL,
ID_Studiengaenge int(11) default NULL,
PRIMARY KEY (ID_link),
KEY ID_link (ID_link,ID_Fakultaeten,ID_Studiengaenge)
) TYPE=MyISAM COMMENT='Beziehungen Fakultaeten zu Studiengaengen';

Die ersten beiden enthalten den Namen einer Fakultät bzw. eines Studiengangs und deren ID, die letzte Tabelle enthält ein Feld mit den entsprechenden Zuordnungen von Studiengängen zu Fakultäten. Soweit so gut. Jetz will ich ne Abfrage machen, welche herausfindet welche Studiengänge der Fakultät mit der ID 2 zugeordnet sind und wie diese lauten: Folgendes ist für mich schlüssig, führt aber zu einem falschen Ergebnis(kartesisches Produkt):

SELECT f.Name, s.Name FROM fakultaeten f, studiengaenge s, t_fakultaeten t WHERE t.ID_Fakultaeten = 2

Mit Joins hab ich bisher nicht gearbeitet, bin mir da mit der Syntax nicht sicher, hatte nur Fehlermeldungen. Aber warum funktioniert der obige Code nicht?

Jemand ne Idee, Tipp, Anschtumper für mich ;-)

Bin für alles dankbar,

der verzweifelte Held
 
Zuletzt bearbeitet:
Du selektierst aus mehreren Tabellen, folglich musst du entweder einen verschachtelten select Befehl verwenden, oder joins machen.

In deinem Fall sähe das ungefähr so aus:

select f.Name,s.Name from fakultaeten f inner join studiengaenge s on ID_Fakultaeten = ID_Studiengaenge where ID_Fakultaeten = 2


Deine dritte Tabelle brauchst du ja anscheinend noch gar nicht, da sie in deinem Slect nicht vorkommt... Zumindest wählst aus ihr nichts aus...
 

Neue Beiträge

Zurück