php - 如何在MYSQL/SQL中查询本例的数据?

标签 php mysql sql

我正在从事网上商店项目。订单有两种,每种订单都有相同的状态,表结构是这样的

order_type_1
==============
id

order_type_2
==============
id

status
=============
id
status_code
order_type1_id (nullable)
order_type2_id (nullable)
create_date
  1. 我设计状态表是因为两个订单有相同的status_code,但我想知道这样的结构是否好,我应该将它们分成两个不同的表吗?

  2. 状态码是这样的,例如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/

相关文章:

php - 测试字符串是否可以是 boolean 值 PHP

mysql - 表格中仅允许一行带有 "main"标志的行

SQL 建筑物的平均高度

MySQL MATCH() AGAINST() FULLTEXT 索引 - 实现部分字符串匹配结合短语匹配

sql - 关于sql group by的一个问题

sql - Red-Gate SQL 源代码控制 (SSC) 中的链接表 - 性能噩梦?

php - 马拉雅拉姆语字体字符作为未知字符保存到mysql数据库中

javascript - 内容协商 - 在 Firefox 中显示图像

PHP Opcache 替换策略

php - 使用 json 和 cURL 访问禁止的错误 403 Web 服务