# Inner Join mit zwei gleichen Spaltennamen



## EGJSoldier (16. Januar 2010)

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:

```
"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.

```
error=Column 'articlesID' in field list is ambiguous
```
Wie kann ich denn jetzt die zwei gleichen Attribute in der SELECT Anweisung unterscheiden

MfG
EGJSoldier


----------



## Yaslaw (16. Januar 2010)

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


```
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
```


----------



## EGJSoldier (16. Januar 2010)

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


----------



## CPoly (16. Januar 2010)

```
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


----------



## Yaslaw (16. Januar 2010)

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.


```
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
```


----------



## EGJSoldier (16. Januar 2010)

Jo das war es. Danke für eure Hilfe.

MfG
EGJSoldier


----------

