选择多个表

时间:2011-10-02 14:10:00

标签: php mysql

我需要一些帮助,

table "friends"
+------+-------------+-----------+
   id  |  friend_id  |   user_id |
+------+-------------+-----------+
   1   |    1222     |   99999   |
+------+-------------+-----------+
   2   |   48989     |   1492    |
+------+-------------+-----------+

table "users"
+------+-------------+---------------+
   id  |  user_name  |   user_image  | 
+------+-------------+---------------+
 99999 |     Mark    | img/abc.jpg   |
+------+-------------+---------------+
 1222  |     Tom     | img/xyz.jpg   |
+------+-------------+---------------+
 etc.  |    etc.     |       etc..   |
+------+-------------+---------------+

我想要SELECT表朋友并制作WHERE语句:

etc:... WHERE user_id = $ _ SESSION [user_id] ... 并将显示来自表用户的数据

好吧,让我们说: 我当前的id是99999所以在表朋友中只匹配1222,所以这将显示来自表用户的id 1222(Tom)的所有数据(图像等)。

所以我的问题是我如何编写这段代码来生成用户数据?

*我尝试使用UNION和LEFT JOIN ..但没有运气..还有新手..

2 个答案:

答案 0 :(得分:4)

$user_id = intval($_SESSION['user_id']);
$friends_of_user = mysql_query('
SELECT 
   f.*, u.* 
FROM  
    friends f 
  LEFT JOIN 
      users u 
  ON 
      u.id = f.friend_id
WHERE 
      f.user_id = '.$user_id);

要排除用户表中没有个人资料的所有用户,只需将LEFT JOIN更改为JOIN

答案 1 :(得分:2)

我使用以下代码:

$user_id = mysql_real_escape_string($_SESSION['user_id']);
$sql = "SELECT f.* 
        FROM users u
        INNER JOIN friends f ON (u.user_id = f.friend_id)
        WHERE u.user_id = '$user_id' ";