関連するスキーマ:
courier(courid:int,courname:str)
city(cid:int,cname:str,zid:int) #zid belonging to some table named zone
courierservice(courid:int,cid:int)
したがって、明らかな関係は宅配業者が「サービスを提供する」都市です。私は、cname が A と B の「両方」の都市にサービスを提供するすべての配送業者を取得しようとしています。つまり、交差点の可能性があります。
次を使用して回避策を得ることができます:
select courname from courier where courid in (select courid from courierservice
where cid=(select cid from city where cname='A')) and
courid in (select courid from courierservice where cid=(select cid from city where cname='B'));
でもこれはちょっと重そうです。
ドキュメントによると、次の All サブクエリで動作するはずです。
select * from courier where courid in (select courid from courierservice
where cid = all (select cid from city where cname='A' or cname='B'));
しかし、空のセットを返しています。
何か足りないものはありますか?