• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JOIN mit WHERE realisieren - Grundlagenfrage

StephanBo

Mitglied
tabelle1:

id / vorname
------------
1 / Hans
2 / Peter
3 / Otto

tabelle2:

id / nachname

1 / Hansen
2 / Peters
3 / Ottomann

SELECT id, vorname, nachname FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.id ;

Funktioniert leider nicht!



Benne ich jetzt aber den Spaltenname in Tabelle 2 um (bpsw. in "id2") und ändere dies dann auch in der Query:

SELECT id, id2, vorname, nachname FROM tabelle1, tabelle2 WHERE id=id2 ;

dann geht es!



Aber warum geht denn nicht das erste Beispiel? Wo liegt hier mein Denkfehler?
 
Ich liebe ja so genaue Problembeschreibungen, wie z.B. "Funktioneirt leider nicht".

Hast Du das query mal mit phpMyAdmin ausprobiert? Dort wirst Du dann vermutlich als Antwort bekommen, dass sich phpMyAdmin nicht entscheiden kann, welche Spalte id er nehmen soll, da id ja in beiden Tabellen vorkommt.
HTML:
SELECT tablelle1.id, vorname, nachname FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.id ;
So sollte es eigentlich gehen.

Gruß thuemmy
 
Ja, sorry :-) Die MySQL-Konsole hatte ausgegeben, dass die ID nicht eindeutig zuzuordnen ist, wo ja auch der Fehler lag.

Mit deiner Musterlösung geht es aber jetzt! Eine Angabe hattest aber noch vergessen: tabelle2.id

Vielen Dank jedenfalls. Google hier nämlich schon seit zwei Stunden und bin nicht auf diesen Fehler gekommen.


SELECT tablelle1.id, tabelle2.id, vorname, nachname FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.id ;
 
Da die tabelle2.id identisch ist mit tabelle1.id musst du die eigentlich nicht nochmal angeben, soviel ich weiß. Aber wenn es funktioniert isses ja auch ok :smile:
 
Eigentlich reicht es wirklich nur eine ID abzufragen, da du mit deiner WHERE Bedingung eh sicherstellst dass die IDs gleich sind... Stelllt sich allerdings die Frage, ob es wirklich sinnvoll ist Vor- und Nachname in getrennten Tabellen zu speichern. Ich persoenlich wuerde aber so eine Anfrage schreiben als:

Code:
 SELECT 
    tabelle1.id, vorname, nachname  
FROM 
    tabelle1 
JOIN 
    tabelle2 
ON 
    tabelle1.id = tabelle2.id
 
Zurück
Oben