【发布时间】:2012-12-23 12:11:09
【问题描述】:
我有以下数据库:
Contacts 表中的user_id 和contact_id 是Users 表中user_id 字段的PK 和FK。如何选择特定用户的所有联系人(或朋友),包括该用户所有联系人的联系人数量。我尝试了不同的 SELECT 查询,但联系人数量不正确或 contact_status 打印错误。我使用 COUNT() 作为打印联系人数量的函数。我使用这个查询,但是contact_status 打印错误:
SELECT COUNT(Contacts.contact_id), Users.user_id, Users.user_name, Users.name, Users.user_picture, Users.mood_message, Users.phone_number, Users.email, Users.country, Users.city, Users.website, Users.birth_date, Users.gender, Users.language, Users.about_me, Users.online_status, Users.privacy, Contacts.contact_status
FROM Contacts JOIN Users ON Contacts.contact_id = Users.user_id
WHERE Users.user_name IN (
SELECT Users.user_name
FROM Users
WHERE Users.user_id IN (
SELECT Contacts.contact_id
FROM Contacts
WHERE Contacts.user_id = 12
)
)
GROUP BY Users.user_name;
用户表:
用户 ID、用户名、...
12 约翰 ...
13 马特 ...
14杰克……
联系人表:
user_id、contact_status、contact_id
12 1 13
13 1 12
12 2 14
如果我想打印 John 的所有联系人,结果应该包括:
COUNT(Contacts.contacts_id),Users.user_name,用户。 ... , Contacts.contact_status
1 马特 ... 1
0 杰克... 2
上述查询将 1, 1 打印为 contact_status 而不是 1, 2。
你能帮我解决这个问题吗?提前致谢。
【问题讨论】:
-
为了让你的问题更清楚,最好的做法是在其中包含具有所需结果的示例记录
:D
标签: mysql database select contacts