0

我有一个数据库,其中有一个产品表和一个产品进口商表。我一直在我的产品列表页面上进行排序系统,按名称、价格和发布日期排序对我来说不是问题。但现在我还想添加按交货时间排序。这有点复杂,因为交货时间取决于几个不同的事情。这是我的两个表的必要字段,可以对我的情况有所启​​发:

products:

    quantity
    status
    importer (id of product importer)


importers:

    id
    deliveryMin
    deliveryMax

以及从最快到最慢的交付情况:

  1. 如果产品数量大于 0,则表示我们有库存,交货时间为 1-2 天。在这种情况下,交货是最快的。

  2. 如果数量为0,我们必须寻找进口商的交货时间。在此之前 - 必须检查状态。所以:如果状态为 1,进口商(在每个产品行的产品表中标记)有库存,然后我们必须查看进口商表中的 deliveryMin 和 deliveryMax。不同的进口商可能有不同的deliveryMin和deliveryMax,这也应该以某种方式看待。因为状态为 1 的产品仍然可以有不同的交货时间,而且这些产品也必须进行分类。

  3. 如果数量为 0 且产品状态为 2,则意味着我们没有库存,也没有任何进口商库存该产品。这是最慢的交货选择,7-14 天。

这种方式是否过于复杂而无法作为 MySQL 查询执行?当没有简单的字段时如何按交货时间订购,但必须使用如此多的步骤来获取信息。

在查看产品页面时使用 PHP 编写代码真的很容易,因为那时只有一种产品,您不必将它与任何东西进行比较。

4

1 回答 1

0

在我看来,产品属于进口商(一种产品不能有多个进口商,对吗?)。所以:

SELECT * FROM
(
    SELECT products.*,
    IF(quantity > 0, 1, IF(status=2, 7, importers.deliveryMin)) as delivery_min,
    IF(quantity > 0, 2, IF(status=2, 14, importers.deliveryMax)) as delivery_max
    FROM products LEFT JOIN importers ON
    products.importer = importers.id
) as product_delivery
ORDER BY delivery_max
于 2013-10-04T12:24:26.207 回答