0

如果这个问题已经解决,我很抱歉,但我不知道如何正确表达我的问题或我应该搜索什么。

所以我有2张桌子:

团体

id | name

会员资格

id | user_id | group_id

我要做的是找到ID为1的用户所属的所有组,以及ID为2的用户所属的所有组。显然这不起作用:

SELECT groups.id FROM groups, memberships WHERE groups.id = memberships.group_id AND memberships.user_id = 1 AND memberships.user_id = 2;

我希望你能理解我的问题,我很难找到合适的词来解决这个问题。随意问。

编辑:两个用户都应该是该组的成员。

4

3 回答 3

1

如果我理解得很好,您需要两个用户都是成员的组吗?

就像是:

SELECT g1.id 
FROM groups g1, memberships m1, groups g2, memberships m2
WHERE m1.group_id = g1.id AND m1.user_id = 1
AND m2.group_id = g2.id AND m2.user_id = 2
AND g1.group_id = g2.group_id;
于 2013-09-10T18:45:44.773 回答
0

Just replace your last AND with OR and put the test of the user_id into (, like this :

SELECT groups.id 
FROM groups, memberships 
WHERE groups.id = memberships.group_id 
AND (memberships.user_id = 1 OR memberships.user_id = 2);
于 2013-09-10T18:40:05.067 回答
0

尝试这个:

SELECT * 
FROM   groups g 
       INNER JOIN memberships m 
               ON m.group_id = g.id 
WHERE  m.user_id = '1' 
        OR m.user_id = '2' 
于 2013-09-10T18:41:55.463 回答