我有三个表groupuserbelongs,其中belongsgroupuser之间的关系。

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/

10-11 04:56