给定行程列表,如何查询属于行程的所有用户?

时间:2018-08-20 01:26:03

标签: sql

我有3张桌子:

trips [id, name, ...]

users [id, first_name, last_name, ... ]

trips_users [trip_id, user_id]

我已经有了一个经过过滤的行程列表,但是现在我正试图获取每次行程中的用户。

当我只搜索一个旅程及其对应的用户时,我使用了INNER JOIN,那还不错。

但是当我搜索旅行列表并获得过滤列表时,我在弄清楚如何编写查询以仅获取之前旅行中的用户时遇到了麻烦。

所以

我首先要做这样的事情-

SELECT id, name, ...
FROM trips
WHERE <some filters>

这给了我旅行清单。现在,我需要关联一次旅途中的用户列表,那么我该如何一次性完成呢?

还是我需要遍历旅行清单并仅对每个旅行清单运行内部联接查询?

我尝试使用RIGHT JOIN,但这会给我带来不好的结果吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用trip_users表进行内部联接。由于此表包含所有行程及其对应用户的详细信息。

select tu.user_id
from trips t 
inner join trips_users tu 
on t.id = tu.trip_id 
where trip_id = <Filters>

答案 1 :(得分:0)

您可以使用以下解决方案:

select trips.id as tripid, trips.name as tripname, user.id as userid, first_name, last_name
from trips
join trips_users on trips_users.trip_id=trips.id
join users on users.id=trips_users.user_id
where <some filter>