三个表,从第2个表和第3个表得到所有结果相应的第一个表(mysql)

时间:2012-02-06 20:32:37

标签: mysql

TABLE users_community_relations

list_id int user_id int dest_user_id int
  1           10            20
  2           10            24
  3           10            33
  4           11            10

TABLE users_avatar

avatar_id int user_id int  webavatar_thumbnail
    1            10            test.jpg
    2            10            test2.jpg
    3            20            test2.jpg
    4            20            test11.jpg

TABLE users

user_id int  nick varchar
  10         kaka
  20         caca
  24         dada
  33         roro

我需要查询这三个表有逻辑,表users_community_relations我把user_id = 10例如我从同一个表列获取结果dest_user_id 20,24,33每个数字代表下两个表中的user_id,我需要从接下来的两个表中获取所有数据,从dest_user_id列获取20,24,33个数字。有时表users_avatar不为用户保留任何头像,在这种情况下,此表中的字符串可能为空。有时它会持有两行以上,在这种情况下,我只需要获得第一行但是使用avatar_id DESC users_avatar表进行排序。

1 个答案:

答案 0 :(得分:0)

这应该有效:

SELECT ucr.*, u.*, ua1.*
FROM users_community_relations ucr
LEFT JOIN users u
  ON u.user_id = ucr.user_id
LEFT JOIN users_avatar ua1
  ON ua1.user_id = u.user_id
LEFT JOIN users_avatar ua2
  ON ua2.user_id = u.user_id AND ua2.avatar_id > ua1.avatar_id
WHERE ua2.avatar_id IS NULL

它使用连接来确保我们只返回具有最高avatar_id的user_avatar行或如果没有头像则返回NULL。