我有三个表group
,user
和belongs
,其中belongs
是group
和user
之间的关系。
Table group
group_id (pk)
group_name
Table user
user_id (pk)
user_name
Table belongs
user_id
group_id
我想显示一个随机组,指定组中的人也在其中。
例如,指定的组是组id=1的位置,当然,我可以使用
"SELECT user_id FROM user u JOIN belongs b ON u.user_id = b.user_id and b.group_id = '1'"
我一直在努力,现在,我不知道如何选择这些人也在其中的群体。
"SELECT g.* FROM group g WHERE ..."
提前谢谢。
最佳答案
通过使用子查询,可以获取与组1中的人员关联的所有其他组的列表:
SELECT g.group_name, COUNT(g.group_name)
FROM group g
INNER JOIN belongs b ON b.group_id = g.group_id
WHERE b.user_id IN ( SELECT u.user_id FROM user u JOIN belongs b ON u.user_id = b.user_id and b.group_id = '1' )
GROUP BY g.group_name
ORDER BY COUNT(g.group_name) DESC
关于php - MySQL的选择表,这取决于其他两个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26811760/