2013-10-23 3 views
6

Mam tabelę z dwoma polami, które odwołują się do identyfikatora innej tabeli. Muszę pobrać nazwę z drugiej tabeli dla obu pól.Mysql wiele lewych złączeń na tym samym stole

np.

 
Table1 
worker1 = 2 (2 is key to other table) 
worker2 = 4

Table2 ID NAME 1 Bill 2 Fred 3 John 4 Paul

Potrzebuję uzyskać $ worker1name = Fred i $ worker2name = Paul.

Więc będę mówiąc coś takiego:

SELECT xxx, NAME?, NAME? FROM Table1 
LEFT JOIN Table2 AS p1 ON Table1.worker1 = Table2.ID 
LEFT JOIN Table2 AS p2 ON Table1.worker2 = Table2.ID 
WHERE ... 

$table = mysql_query(...); 
$rec = mysql_fetch_assoc($table); 
$worker1name = $rec['???']; 
$worker2name = $rec['???']; 

Co mogę wstawić w tych ostatnich dwóch sprawozdań, aby uzyskać dwie nazwy. A dokładniej, co muszę dodać do SELECT, aby określić, co chcę nazwać dwiema różnymi wersjami pola NAME z tabeli 2?

Odpowiedz

15

Należy alias pola również tak:

SELECT 
    xxx, 
    p1.NAME as p1name, 
    p2.NAME as p2name 
FROM Table1 
LEFT JOIN Table2 AS p1 ON Table1.worker1 = p1.ID 
LEFT JOIN Table2 AS p2 ON Table1.worker2 = p2.ID 
WHERE ... 
+0

otrzymuję komunikat o błędzie: Nie można uruchomić kwerendę: Nieznana kolumna „table2.id” w „o klauzuli” (odpowiednik nazwy w moim tabela) – user2605793

+0

zmodyfikował zapytanie. (musisz użyć pseudonimu, jest tam.) –

+0

Pomocna! dzięki :) – InspiredCoder

-1
SELECT xxx, p1.NAME AS p1Name, p2.NAME AS p2Name FROM Table1 


$worker1name = $rec['p1Name']; 
$worker2name = $rec['p2Name'];