我有三张table:
1-晚餐,含晚餐详情
dinnerid | description | date
1234
5678
9012
2-晚餐小组,以及参加晚餐的小组
dinnerid | groupid
1234 4897
1234 5643
5678 2398
3-将用户分组,其中用户是组的一部分
groupid | userid
4897 48
4897 97
5643 56
5643 43
我正在尝试进行一个查询,返回所有groupid参与的晚餐的详细信息,其中有我要查找的userid
例如:userid 48--->groupid 4897--->dinnerid1234
我希望查询返回id为1234的晚餐的详细信息和参与的groupid(在本例中为48975643)
我试过了
SELECT dinners.*, array_agg(dinners_detgroups.groupid) AS groupid
FROM dinners
INNER JOIN dinners_detgroups ON dinners.dinnerid = dinners_detgroups.dinnerid
LEFT JOIN groups_users
ON dinners_detgroups.groupid = groups_users.groupid
AND groups_users.userid = ' + request.user.userid + '
GROUP BY dinners.dinnerid
但把所有的晚餐都还给我,而不仅仅是有48个人的晚餐。
还有这个
SELECT dinners.*, array_agg(dinners_detgroups.groupid) AS groupid
FROM dinners
INNER JOIN dinners_detgroups ON dinners.dinnerid = dinners_detgroups.dinnerid
INNER JOIN groups_users
ON dinners_detgroups.groupid = groups_users.groupid
AND groups_users.userid = ' + request.user.userid + '
GROUP BY dinners.dinnerid
它返回正确的晚餐,但只返回用户id为48(groupid 4897)的groupid,但我需要所有参与晚餐的groupid(在本例中也是groupid 5643)
1条答案
按热度按时间acruukt91#
如果我理解正确,您希望在其中一个组具有请求的用户时包含所有组。如果是这样,我想你可以用这个方法: