2013-01-21 5 views
5

Quindi, ecco la cosa desiderata mi piacerebbe fare. Ho due tabelle in sql Mi piacerebbe echo out tutti i messaggi e il nome utente del mittente del messaggio.php sql che collega tra loro le chiavi primarie e straniere (liste collegate)

ecco come sono impostate le tabelle.

table name: user 
user_id user_name 
    1  abc 
    2  bob 
    3  pqr 


table2 name : message 
intro_id  user_id  msg 
    1    4   abc 
    2    4   jkl 
    3    2   cbd 

output desiderato sarebbe stato così

nuovo abc

nuove JKL

bob CBD

Il mio codice finora Uscite solo i messaggi

$result = mysql_query("SELECT * FROM message"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['msg'] ; 
    } 
+1

Mentre questa domanda sono sicuro che è stato risposto un milione di volte +1 per tavoli visivi – user1775570

risposta

4

Prova questa ricerca per ottenere il nome utente

mysql_query("SELECT user.user_name, message.msg FROM message INNER JOIN user ON message.user_id = user.user_id"); 
while($row = mysql_fetch_array($result)) 
{ 
    echo $row['user_name'] . ": " . $row['msg'] ; 
} 
+0

Grazie per la tua risposta. Sai se il tuo metodo o l'altra risposta di CoBolt è più efficiente? se è così, per favore, spiega! – ramr

+1

è assolutamente equivalente, ti ho dato il modo standard di scrivere join, si prega di dare un'occhiata a http://en.wikipedia.org/wiki/Join_(SQL)#Inner_join ed essere consapevoli di indice su 'message.user_id' , migliorerà le prestazioni quando avrai molti record all'interno di 'message'. – Igor

4
$result = mysql_query("SELECT user.user_name,message.msg FROM user,message WHERE user.user_id=message.user_id"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['user_name']." ".$row['msg']; 
    } 

Questo dovrebbe funzionare.

Si prega di commento, se si pretende molto

Problemi correlati