我正在开展网上商店项目。有两种或顺序,对于每种类型的订单,它们具有相同的状态,表结构是这样的
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子句适用于行,但不适用于结果集。
感谢您的帮助。
答案 0 :(得分:1)
您好我建议仅使用状态表作为参考。并添加订单类型参考表
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)
答案 1 :(得分:0)
如果订单只能有两种类型中的一种且只有一种状态,为什么不将订单ID,订单类型,订单状态作为表格?
要使用表格设计进行选择,请使用
SELECT *
FROM status
WHERE status_code=300;