基本上为了快速处理事情,我需要能够访问两个表中的信息,这两个表由一个到多个的中间点连接,然后是多个到多个的关系。具体来说,我有以下相关表格
用户[id,...]
游[USER_ID,...]
trip_type [ID,trip_id,TYPE_ID]
类型[ID,...]
即用户有许多旅行,其中有许多类型的旅行本身有很多旅行。
我的目标是通过他们每次旅行获得与特定用户相关联的每种类型ID(如果发生重复)的列表。
我确信这对于SQL倾向是微不足道的,但我不是那些人之一,因此我只是在写这些废话。
答案 0 :(得分:0)
select users.id, trip_type.type_id, count(*) from users join trips on trips.user_id = users.id join trip_type on trips.id = trip_type.trip_id group by users.id, trip_type.type_id
这也可以计算用户每种类型的旅行次数。此查询不会列出未进行任何旅行的用户。如果您还需要这些用户,请将“加入”一词更改为“左加入”
答案 1 :(得分:0)
SELECT tt.type_id, u.user_id, tr.id
FROM trip_type tt
INNER JOIN trips tr ON tr.id = tt.trip_id
INNER JOIN types ty ON ty.id = tt.type_id
INNER JOIN users u ON u.id = tr.user_id
WHERE u.user_id = ?
这将返回特定用户的type_ids,user_id和trip id。