2012-02-06 65 views
1
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为实施例I得到的结果同一表列dest_user_id 20,24,33每个数字代表下两个表中的user_id,我需要从后两个表中获取所有数据,从dest_user_id列中获得20,24,33个数字。有时候,表users_avatar没有为用户保存任何头像,在这种情况下,该表中的字符串可能为空。有时它会保存两行以上的数据,在这种情况下,我只需要获取第一个数据,但使用avatar_id DESC users_avatar表进行排序。三个表,获得从二路和3TH表中的所有的结果相应于第一表(MySQL的)

回答

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或NULL返回user_avatar行,如果没有分身。

+0

thx,它很酷 – Cameleon 2012-02-06 22:10:39

相关问题