mmofacts.com

MySQL JOIN - 2 Werte 1 Query

gepostet vor 13 Jahre, 11 Monate von Kapsonfire

Hi, folgende Problematik.

Ich habe eine Tabelle Clan

in der sind ein paar Spalten.

Unter anderem die Userid des Leaders und des Coleaders

Nun möchte ich per Join den Namen des Leaders und des Coleaders aus der Userstabelle holen.

SQL:

SELECT clans.*, users.name AS leadername, users.name AS coleadername 
FROM clans INNER JOIN users ON clans.leader = users.uid INNER JOIN users
ON clans.coleader = users.uid

Bringt nicht den gewünschten Erfolg.

Kann sein, dass ich grad einfach nru doof bin.

Lösungsvorschlag? In der Dokumentation finde ich da irgendwie nichts

gepostet vor 13 Jahre, 11 Monate von Todi42

wie wäre es mit so etwas in der Richtung (ausgehend davon, dass ein Clan keinen Coleader haben muss, aber einen leader):
SQL:


SELECT c.*, u1.name AS leadername, u2.name AS coleadername
FROM clans c
INNER JOIN (users u1) ON (c.leader = u1.uid)
LEFT OUTER JOIN (users u2) ON (c.coleader = u2.uid)
gepostet vor 13 Jahre, 11 Monate von Kapsonfire

gleicher error wie ich den bekomme

Not unique table/alias: 'u1'

gepostet vor 13 Jahre, 11 Monate von DrakeL

Ein Wunder dass MySQL da kein Fehler wirft... Du kannst eine Tabelle nicht zwei mal mit dem selben Namen joinen, also benenne mindestens eine der Tabellen beim Join um:

SQL:

SELECT
clans.*,
leader.name AS leadername,
coleader.name AS coleadername
FROM
clans
INNER JOIN users leader ON clans.leader = users.uid
INNER JOIN users coloeader ON clans.coleader = users.uid
gepostet vor 13 Jahre, 11 Monate von Kapsonfire

Original von DrakeL

Ein Wunder dass MySQL da kein Fehler wirft... Du kannst eine Tabelle nicht zwei mal mit dem selben Namen joinen, also benenne mindestens eine der Tabellen beim Join um:

SQL:

SELECT
clans.*,
leader.name AS leadername,
coleader.name AS coleadername
FROM
clans
INNER JOIN users leader ON clans.leader = users.uid
INNER JOIN users coloeader ON clans.coleader = users.uid

Danke

SQL:

SELECT  clans . * , leader.name AS leadername, coleader.name AS coleadername
FROM clans
INNER JOIN users AS leader ON clans.leader = leader.uid
INNER JOIN users AS coleader ON clans.coleader = coleader.uid

 brachte den gewünschten Erfolg!

gepostet vor 13 Jahre, 11 Monate von DrakeL

Und wie Todi42 angedeutet hat, du bekommst den Clan nur wenn er einen Leader und einen Coleader hat. Ich gehe mal davon aus dass ein Coleader nicht immer vorhanden sein muss, daher musst das zweite Join zu einem Left Join ändern.

gepostet vor 13 Jahre, 11 Monate von Todi42

Original von Kapsonfire

gleicher error wie ich den bekomme

Not unique table/alias: 'u1'

 Du hast das richtig abgeschrieben mit u1 und u2? (zugegeben: schlecht gewählte Namen).

Auf diese Diskussion antworten