我为一个会议网站的学校项目做了一个巨大的SQL行,我有一个问题,一个查询找到有多个标准(本地化,性取向和兴趣中心)的更好的人,这是我查询中唯一缺失的是兴趣。
我对一个用户有共同兴趣的数量有一点问题。我的桌子就像这样
Users
+---+----------+
|ID | USER | ...
+---+----------+
|1 |User1 | ...
+---+----------+
|2 |User2 | ...
+---+----------+
|3 |User3 | ...
+---+----------+
usersInterest :
+---+-------------+-------------+
|ID | id_user | id_interest |
+---+-------------+-------------+
|1 |1 | 1 |
+---+-------------+-------------+
|2 |1 | 2 |
+---+-------------+-------------+
|3 |2 | 1 |
+---+-------------+-------------+
|4 |2 | 3 |
+---+-------------+-------------+
|5 |3 | 4 |
+---+-------------+-------------+
|6 |3 | 5 |
+---+-------------+-------------+
我想要一个与用户通信感兴趣的列1.他们与用户2共享id 1并且与用户没有任何共同点3。 这将通过示例给出user1:
+---+----------+----------------+
|ID | USER | COMMON_INTEREST|
+---+----------+----------------+
|2 |User2 |1 | << Have idinterest 1 in common
+---+----------+----------------+
|3 |User3 |0 |
+---+----------+----------------+
我在互联网上找不到工作的解决方案。
答案 0 :(得分:0)
您好Frosties,您可以使用以下查询来满足您的要求,
SELECT T1.ID,T1.USER,T2.COMMON_INTEREST FROM table_name1 T1
INNER JOIN (SELECT ID, COUNT(id_interest) as COMMON_INTEREST
FROM table_name2 GROUP BY ID) T2
ON (T1.ID = T2.ID);
使用ID列连接第一个表和第二个表。通过基于ID分组并在select子句中选择所需列来生成id_interest计数
希望你得到你需要的东西
答案 1 :(得分:0)
我终于为感兴趣的一个做了,这个查询使用了这个查询:
select ui.id_users, COUNT(up.id_interest) from users_usersInterest ui left join (SELECT id_interest FROM `users_usersInterest` WHERE id_users = 6) up on up.id_interest = ui.id_interest group by ui.id_users