2016-09-28 54 views
-5

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

我想在COMMUN利益与用户1列,他们与用户2共享ID为1,没有任何共同之处与用户3 这将USER1给这个通过示例:

+---+----------+----------------+ 
|ID | USER | COMMON_INTEREST| 
+---+----------+----------------+ 
|2 |User2  |1    | << Have idinterest 1 in common 
+---+----------+----------------+ 
|3 |User3  |0    | 
+---+----------+----------------+ 

我没有找到工作的互联网工作的解决方案。

+1

你尝试过什么吗?你在SQL学习的哪里?你有没有了解外部连接?为什么你需要输出的第二行有ID 2? 2代表什么? –

+0

你能否提供一个给定情况下输出结果的样本?你的并不复杂,例如如果有多重共同利益,那么会有什么结果呢?或者每个利益有多重结果? –

+0

我只想要与特定用户共同感兴趣的次数,我编辑了一点我的问题。 2,只是用户的ID。 – Frosties

回答

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

,删除了我的评论 –

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