Inner Join mit zwei gleichen Spaltennamen

EGJSoldier

Erfahrenes Mitglied
Hallo alle zusammen. ich habe ein Problem, und zwar will ich über INNER JOIN 3 Tabellen miteinander verbinden. Das Problem ist, das es in zwei der Drei Tabellen zweimal den selben Primärschlüssel gibt(Das sind auch gleichzeitig meine Fremdschlüssel). Hier ersteinmal meine Abfrage. Nicht wunder, sie ist für PHP geschrieben:
Code:
"SELECT date, title, articlesID, content, artrub_name, artrub_pic FROM (".PREFIX."articles AS A INNER JOIN ".PREFIX."artrub AS R ON A.artrub_id = R.artrubID) INNER JOIN ".PREFIX."articles_contents AS C ON A.articlesID = C.articlesID WHERE saved='1' ORDER BY date DESC LIMIT 0, ".$latestarticles
Wie man in der letzten Join sieht, sind es zwei leiche Attribute. Das Problem ist jetzt in der SELECT-Anweisung. Da steht nur "articlesID" und ehr weis nicht, welches er nehmen soll und deshalb kommt eine Fehlermeldung.
Code:
error=Column 'articlesID' in field list is ambiguous
Wie kann ich denn jetzt die zwei gleichen Attribute in der SELECT Anweisung unterscheiden

MfG
EGJSoldier
 
du hast je bereits Tabellenaliase die du für die join verwendest. die kannst du auch im Select-Teil verwenden

SQL:
SELECT 
	date,
	title,
	A.articlesID,
	content,
	artrub_name,
	artrub_pic 
FROM 
	(".PREFIX."articles AS A 
	INNER JOIN ".PREFIX."artrub AS R 
		ON A.artrub_id = R.artrubID) 
	INNER JOIN ".PREFIX."articles_contents AS C 
		ON A.articlesID = C.articlesID 
WHERE 
	saved='1' 
ORDER BY 
	date DESC 
LIMIT 0, ".$latestarticles
 
Zuletzt bearbeitet von einem Moderator:
Danke dir, das Problem ist jetzt schon mal gelöst. Jetzt habe ich aber nochmal iene Frage:
Ich habe eine Tabelle, in der einmal userID und einmal userID2 ist(Ist nur ein Beispiel ;)). Und in der Anderen Tabelle habe ich die Benutzernamen mit der dazugehörenden ID. Wie kann ich jetzt zu den UserID's, die ich in der ersten Tabelle genannt habe, die Benutzernamen ausgeben. Das soll jedoch alles in einer Abfrage passieren. Die Ausgabe sollte dann so aussehen:

userID | Benutzername | userID2 | Benutzername

Hoffe ihr könnt mir bei diesem Problem auch nich weiterhelfen.

MfG
EGJSoldier
 
SQL:
SELECT a.id, a.name, b.id, b.name FROM usernames AS a, usernames AS b, userconnect AS c
WHERE a.id = c.userid1 AND b.id = c.userid2

Meine Testtabellen waren:
username: id(primary key) | name
userconnect: userid1 | userid2
 
genau gleich. Du solltest aber darauf achten, dass du beim 2ten Benutzernamen im SELECT-Teil ein Alias gibst, damit du in der AUsgabe einen eindeutigen Feldnamen hast.

SQL:
SELECT
	t.userid,
	u1.benutzername,
	t.userid2,
	u2.benutzername AS benutzername2
FROM
	mytable AS t
	INNER JOIN user AS u1
		ON t.userid = u1.userid
	INNER JOIN user AS u2
		ON t.userid2 = u2.userid
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück