使用 PhpMyAdmin ,我正在尝试检索具有一组给定设施的全部的房间列表。我可以查询一张有我想要的设施的房间表,但我不知道如何过滤出每个设施出现的房间。
以下是我的询问:
SELECT distinct * FROM `Facilities` WHERE `Facility` = 'DVD Player' UNION
SELECT distinct * from `Facilities` WHERE `Facility` = 'Computer';
当我使用Group By 'Room' Having Count(Distinct 'Room') = 2
时,我会使用此订单获得正确的表格,但如果我选择Computer
然后将其合并并选择DVD Player
,我不会< / strong>获取正确的表格。
我在任何分组之前的初始查询都显示了这一点:
Room | Facility
A.0.0.1 Computer
G.0.02 Computer
HH.0.23 Computer
G.0.02 DVD Player
HH.0.23 DVD Player
我希望房间里有电脑和DVD播放器。我的表中有22个设施,我可能希望能够查询它们的任意组合以找到匹配的房间。
答案 0 :(得分:3)
如果您想要拥有特定设施的房间,请尝试以下方式:
select f.room
from facilities f
where f.facility in ('Computer', 'DVD Player')
group by f.room
having count(distinct f.facility) = 2;