在两个表中计算共同的兴趣

时间:2016-09-28 13:17:41

标签: sql

我为一个会议网站的学校项目做了一个巨大的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               |
+---+----------+----------------+

我在互联网上找不到工作的解决方案。

2 个答案:

答案 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