2013-10-23 3 views
6

Ho una tabella con due campi che fanno riferimento l'ID di un'altra tabella. Ho bisogno di tirare il nome dal l'altro tavolo per entrambi i campi.Mysql multipla sinistra si unisce sulla stessa tavola

es.

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

Table2 ID NAME 1 Bill 2 Fred 3 John 4 Paul

ho bisogno di ottenere $ worker1name = Fred e $ worker2name = Paul.

così sarò dicendo qualcosa del tipo:

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['???']; 

Cosa posso inserire in quegli ultimi due affermazioni per ottenere i due nomi. O più precisamente quello che devo aggiungere al SELECT per specificare quello che voglio le due diverse versioni del campo del nome da tabella 2 di essere chiamato per favore?

risposta

15

Si dovrebbe alias i campi anche in questo modo:

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

ottengo un errore: Impossibile eseguire query: Unknown colonna 'Table2.ID' in 'sulla clausola' (i nomi equivalenti nella mia tabella) – user2605793

+0

modificato l'interrogazione. (È necessario utilizzare l'alias è che non c'è alcuna.) –

+0

utile! Grazie :) – InspiredCoder

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


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