加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP – MySQL合并我的选择

发布时间:2020-12-13 16:31:04 所属栏目:PHP教程 来源:网络整理
导读:并感谢您抽出时间来帮助我. 信息 我正在使用CodeIgniter,如果它可能与你的答案有关系;). 问题 我在一个酒店的网站,试图找出如何做我的预订室. 我希望用户选择可用服务列表并返回给他们,包含这些服务(所有这些)的房间列表,之后,包含至少一个的列表.这样,我会
并感谢您抽出时间来帮助我.

信息

我正在使用CodeIgniter,如果它可能与你的答案有关系;).

问题

我在一个酒店的网站,试图找出如何做我的预订室.

我希望用户选择可用服务列表并返回给他们,包含这些服务(所有这些)的房间列表,之后,包含至少一个的列表.这样,我会向他们显示符合他们所有需要的房间列表,还有一个可能做的伎俩,但没有一切.

以下是我为我的房间存储我的服务(这可能会说谎我的问题…)

Table "services_rooms"
id_services_rooms | id_room | id_service
1                 | 1       | 1
2                 | 1       | 2
3                 | 1       | 3
5                 | 1       | 5
11                | 2       | 2
12                | 2       | 3
...               | ...     | ...

我如何设法做我的SQL,要求我的服务器给我所有的房间包含服务1,2和3,因此,只有我的“id_room”1应该回来?

我试过做一些连接/ group_bys,但我得到的最多的是例子,3行回来说:

Return rows :
ID_ROOM 1 | ID_SERVICE 1
ID_ROOM 1 | ID_SERVICE 2
ID_ROOM 1 | ID_SERVICE 3

看到它的另一种方式就是这样:我想问我的服务器哪些房间包含所有这些服务:1,2,3

它会回答:ID_ROOM 1.

我已经看到其他几个问题涉及到合并等等,但是不能很好地应用他们对我的问题的答案.

再次感谢.

这叫做 Relational Division.
SELECT id_room
FROM services_rooms
WHERE id_service IN (1,3)
GROUP BY id_room
HAVING COUNT(*) = 3

> SQLFiddle Demo

如果在id_service对ech id_room不强制执行唯一约束,则需要DISTINCT.

SELECT id_room
FROM services_rooms
WHERE id_service IN (1,3)
GROUP BY id_room
HAVING COUNT(DISTINCT id_service) = 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读