2017-06-20 36 views
0

我有两个表两次左加入

TBL USERS 
    user_id 
    user_name 

TBL MESSAGES 
    message_id 
    message_from_id 
    message_to_id 
    message_text 

我用一个简单的连接来得到变量

SELECT * 
FROM messages 
LEFT JOIN users ON user_id = msg_to 
WHERE msg_id = $msg_id 

$user_name = $row['user_name']; 
$message_text = $row['message_text']; 

如何获取来自同一个表2变量?

$message_from = $row['user_name']; 
$message_to = $row['user_name']; 

我期待这样的结果:

MSG ID  FROM  TO  TEXT 
1   Paul  Mark Blah 
+0

只需再次加入USERS表。此外,而不是*,指定确切的列名称并给它们别名。 – Bob

+0

感谢您的帮助Bob –

回答

1
SELECT message_text, 
    to_users.user_name as to_user, 
    from_users.user_name as from_user 
FROM messages 
LEFT JOIN users as to_users ON user_id = message_to_id 
LEFT JOIN users as from_users ON user_id = message_from_id 
WHERE message_id = $msg_id; 

$message_from = $row['from_user']; 
$message_to = $row['to_user']; 
$message_text = $row['message_text']; 

切圆,我建议你考虑使用准备好的发言的习惯,如果你正在使用PHP,而不是使用你的字符串中的变量如$msg_id。这可以帮助保护您免受SQL注入攻击。

+0

非常感谢Andrew –