mysql高效查询_MySQL高效的查询查询

我已经解决了以下问题,还增加了额外的水平,考虑了当前时间,因为有些供应商无法在一天中的某个时间后准时交货。我没有包括的是一笔金额(股票)。我已将该字段添加到产品表中作为sumStock,并且每当更改库存记录时始终更新它。

SELECT sp.price

, p.*

FROM products p

LEFT JOIN stock_products sp

USING (ean)

WHERE sp.id = IFNULL(

(SELECT psi.id

FROM stock_products psi

JOIN suppliers sup

ON psi.pid = sup.id

WHERE psi.ean = p.ean

AND psi.stock > 0

ORDER BY IF(sup.time>40667, sup.deliveryTime, sup.deliveryTime+86400)

, price

LIMIT 1)

,

(SELECT psi.id

FROM stock_products psi

JOIN suppliers sup

ON psi.pid = sup.id

WHERE psi.ean = p.ean

ORDER BY IF(sup.time>40667, sup.deliveryTime, sup.deliveryTime+86400)

, price

LIMIT 1)

ORDER BY price请注意,我在产品没有库存的罕见情况下使用IFNULL。我还是想展示那些记录。查询有点短,但没有,但这是我最终使用的完整解决方案。

此外,40667是表示当前时间的数字。它应该是自午夜以来的当前秒数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值