我有两张桌子酒店和company_hotels。酒店表由Id,Hotel_Name,Destination_Id和company_hotels组成,包括Id,Company_Id,Hotel_Id。我想和Destination_Id = 10
在公司ID 1和2搜索相同的酒店酒店表
1 hotel 1 10
2 hotel 2 11
3 hotel 3 10
公司酒店
1 1 1
2 1 3
3 2 1
对于上面的例子我需要结果hotel 1作为结果
答案 0 :(得分:2)
这应该可以解决问题
select h.Id,h.Hotel_Name
from hotel h
inner join company_hotels ch on ch.Hotel_Id = h.Id
where
ch.Company_Id IN (1,2)
AND h.Destination_Id = 10
更新1
从更新后的评论中,查询应返回包含公司ID 1和2的酒店,而不是所有酒店都有1或2
select h.Id,h.Hotel_Name
from hotels h
inner join company_hotels ch on ch.Hotel_Id = h.Id
where
ch.Company_Id IN (1,2)
AND h.Destination_Id = 10
group by h.Id
having count(h.Id) = 2
答案 1 :(得分:0)
加入hotel_id
Select * from company_hotels inner join hotel
on hotel.id=company_hotels.hotel_id
where company_hotel.company_id in (1,2)
and hotel.destination_id=10