我有以下数据库:
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;
用户表:
user_id, user_name, ...
12 约翰 ...
13 马特 ...
14 杰克 ...
联系人表:
用户 ID、联系人状态、联系人 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。
你能帮我解决这个问题吗?提前致谢。