我正在尝试获取指定用户ID的“联系人”列表。 假设我的用户ID是1,我需要从 chat-contactlist 获取我的联系人的ID列表,然后获取每个ID的所有信息。
所有用户的ID,姓名和联系信息
表usr:uid,rname,phonenumber
在线状态和其他内容
表chat-usr:uid,昵称,online_status
包含此用户拥有的每个联系人的用户ID和用户ID:
表格聊天 - 联系人列表:uid,cid(cid =“uid”用户列表中人员的ID
所以我需要指定'uid'的所有'cid'的名称,昵称,online_status ...不知道我读了一个关于左连接的教程但是它接缝很复杂以合并多个表,任何人都想尝试?有什么建议吗?
谢谢
修改
按名称更改名称,因为name是SQL的保留字。
答案 0 :(得分:2)
SELECT ccl.uid,
Name = u.Name,
Nickname = cu.nickname,
OnlineStatus = cu.onlinestatus
FROM chat-contactlist ccl
JOIN chat-usr cu ON ccl.cid = cu.uid
JOIN usr u ON u.uid = cu.uid
Where ccl.uid = @uid /* your filter here */
答案 1 :(得分:2)
这是一个3表连接,您可以在其中找到链接器表chat-contactlist
定义的多对多关系:
SELECT u.name username, c.nickname chat_username, c.online_status
FROM chat-contactlist cc
JOIN usr u ON (u.uid = cc.uid)
JOIN chat-usr c ON (c.uid = cc.cid);
这是一个明确的联接。如果您要选择特定用户,请稍后在WHERE
子句中添加该用户。
SELECT u.name username, c.nickname chat_username, c.online_status
FROM usr u, chat-usr c, chat-contactlist cc
WHERE cc.uid = u.uid
AND cc.cid = c.uid;
这是一个隐式连接,其中表在WHERE
语句中通过相等关联。不建议使用,但我发现它们有时更容易阅读。
更多信息: