php - 在 MySQL 中存储逗号分隔的数据

标签 php mysql database

我读到这是一个禁忌,但我想知道是否总是如此。我有一张可以容纳一系列座位的“餐 table ”列表。
enter image description here

您可以在图片中看到 table_num 12 将容纳 2 或 3 个座位。

所以,现在我目前的解决方案是查询所有的表记录(根据 user_index 未公开的原因)然后遍历结果寻找可以容纳 3 人的表(如果恰好是三个人找一张表).

我通过在返回数据的“座位”列上使用 array_implode() 方法(在 php 中)来做到这一点。我觉得这是一个比创建单独的“座位”表然后为每个座位可能性分配 table_index 和 user_index,然后必须运行第二个查询以在原始“表”表中查找 table_num 更简单的解决方案。

基本上,通过使用 array_implode() 我可以绕过第二个查询。但是,我不知道这是否会减少征税。或者,我可能错过了一些很棒的查询语言(比如关系表行话?)

最佳答案

创建一个名为 TableSeats 的表.在其中,您将有一个 table_num和一个 seats柱子。使用 table_num列作为外键。然后,要找到可容纳 3 人的 table ,就像这样:

select
    *
from
    tables t
where
    exists (select 1 from tableseats s where s.seats = 3)

这里的魔法是 exists条款。当然,你也可以做 inner join , 但我建议 exists在这里,因为这可以让你通过说 where s.seats >= 7 找到任何至少可以容纳 7 人的 table 。 ,甚至一张可以容纳 5 到 8 人的 table where s.seats between 5 and 8 .

关于php - 在 MySQL 中存储逗号分隔的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915691/

相关文章:

php - 在字段中输入 0 寄存器为空?

mysql - SQL使用带有字母数字数据的数字排序对列(varchar(255))进行排序

PHP:获取数组元素

php - 两个日期之间的订单 mysql magento

objective-c - Xcode - 将东西上传到服务器/网络服务(如何?!)

mysql - DECIMAL类型舍入额外的小数并且不截断mysql

php - 数据未存储在数据库中

php - 如何使用 PHP DateTime 列出过去 N 个月

mysql - 日志 Rails 中未知的 SQL 平均查询

PHP 循环排序表