0

私はこのモデルを持っています。

旅行には、TripPassenger を通じて多くの乗客がいます

TripPassenger は Trip に属します

TripPassenger は User に属します

ユーザー

乗客 X が乗客 Y と一緒に行ったすべての乗車を取得するにはどうすればよいですか?

4

3 に答える 3

2

1 つの解決策は、自己結合です。

select  tp1.TripId
from    TripPassenger tp1
join    TripPassenger tp2
on      tp1.UserId = X
        and tp2.UserId = Y
        and tp1.TripId = tp2.TripId
于 2012-08-04T14:20:38.683 に答える
1
select trip_id
from trip_passenger
where passenger_id in (1,2)
group by trip_id
having count(*) = 2;

これにより、正確にその 2 人の乗客が参加した旅行が返されます。他の乗客も参加した場合は、 を使用する必要がありますcount(*) >= 2

また、乗客が同じ旅行に 2 回割り当てられることはないと仮定します。

于 2012-08-04T14:40:42.323 に答える
0
SELECT TripID
FROM TripPassenger
WHERE User = @User1
  AND TripID IN (
    SELECT TripID
    FROM TripPassenger
    WHERE User = @User2
  )
于 2012-08-06T17:21:30.263 に答える