我有一个数据库,我有一个产品表和一个产品进口商表。我一直在我的产品列表页面上进行分拣系统,按名称,价格和发布分类对我来说不是问题。但现在我想按交货时间添加分拣。这有点复杂,因为交货时间取决于几个不同的东西。这是我的两个表的必要字段,可以启发我的情况:
products:
quantity
status
importer (id of product importer)
importers:
id
deliveryMin
deliveryMax
从最快到最慢的交付情况:
如果产品数量大于0,则表示我们有库存,交货时间为1-2天。在那种情况下,交付是最快的。
如果数量为0,我们必须查找进口商的交货时间。在此之前 - 必须检查状态。所以:如果status为1,则导入器(在每个产品行的products表中标记)都有库存,然后我们必须查看importMin和deliveryMax的importers表。不同的进口商可能有不同的deliveryMin和deliveryMax,这应该以某种方式看起来。因为状态为1的产品仍然可以具有不同的交货时间,并且那些产品也必须进行分类。
如果数量为0且产品状态为2,则表示我们没有库存,也没有任何库存产品的进口商。这是最慢的交付选项,7-14天。
这样做太复杂了,不能作为MySQL查询执行吗?如何在没有简单的字段的情况下按交货时间排序,但必须使用这么多步骤获取信息。
在查看产品页面时,使用PHP编写代码非常简单,因为只有一个产品,您无需将其与任何内容进行比较。
答案 0 :(得分: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