我正在从事网上商店项目。订单有两种,每种订单都有相同的状态,表结构是这样的
order_type_1
==============
id
order_type_2
==============
id
status
=============
id
status_code
order_type1_id (nullable)
order_type2_id (nullable)
create_date
我设计状态表是因为两个订单有相同的status_code,但我想知道这样的结构是否好,我应该将它们分成两个不同的表吗?
状态码是这样的,例如200 个订单 300 个发货 400 个完成,有什么办法可以获取所有正在发货(300 个)的订单吗?我曾想过使用 Between ,但事实并非如此, WHERE 子句适用于一行,但不适用于结果集。
感谢您的帮助。
最佳答案
您好,我建议仅使用状态表作为引用。并添加订单类型引用表
status
=============
id
status_code
order_type
=============
id
order_code
order_desc
然后有一个订单表
order
=============
id
order_type_id
status_id
以及查询
select * from order o join status s on s.id = o.status_id where s.status_code = 300
编辑: 订单多种状态的结构:
order
=============
id
order_type_id
status
=============
id
status_code
order_status
============
order_id
status_id
order_type
=============
id
order_code
order_desc
这个想法是保留 status 和 order_type 表仅作为引用,这意味着您不会对这些表执行插入操作。
对于查询,你可以使用这个:
select * from order o join order_status os on os.order_id = o.id join status s on os.status_id = s.id where s.status_code in (300,200,100)
关于php - 如何在MYSQL/SQL中查询本例的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24401684/