Php 按交货时间订购产品清单-由于条件太多,似乎太复杂了

Php 按交货时间订购产品清单-由于条件太多,似乎太复杂了,php,mysql,Php,Mysql,我有一个数据库,其中有一个产品表和一个产品进口商表。我一直在我的产品列表页面上做排序系统,按名称、价格和发布日期排序对我来说不是问题。但现在我还要添加按交货时间排序。这有点复杂,因为交付时间取决于几个不同的因素。以下是我的两个表的必要字段,可以稍微说明我的情况: products: quantity status importer (id of product importer) importers: id deliveryMin deli

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

products:

    quantity
    status
    importer (id of product importer)


importers:

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

  • 如果产品数量大于0,这意味着我们有库存,交货时间为1-2天。在这种情况下,交货最快

  • 如果数量为0,我们必须查找进口商的交货时间。在此之前,必须检查状态。因此:如果状态为1,则进口商(在每个产品行的products表中标记)有库存,然后我们必须查看进口商表中的deliveryMin和deliveryMax。不同的进口商可能有不同的deliveryMin和deliveryMax,这也应该以某种方式加以考虑。因为状态为1的产品仍然可以有不同的交付时间,并且这些产品也必须进行排序

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

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


    在查看产品页面时,使用PHP编写代码非常容易,因为那时只有一个产品,您不必将其与任何东西进行比较

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

    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