我读到这是一个禁忌,但我想知道是否总是如此。我有一张可以容纳一系列座位的“餐 table ”列表。
您可以在图片中看到 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/