mySQL查询在24小时内找到最低的“有效”价格

时间:2017-01-09 17:20:34

标签: mysql

请帮我摆脱头痛.. 事先我为我的坏语言道歉,无论是英语还是mysql。希望有人能理解这个问题.. :)

我有一个数据库,任何人都可以在各个商店记录各种产品的价格。以下查询是一个半理论上的示例,可能根本不起作用,但它是为了说明我的挑战而翻译的。 该查询应该找到过去24小时内给定$产品的最低注册价格:

SELECT img, chain.chainid, chain.chainname, shops.shopid, shoplocation, shopname, prices.price, DATE_FORMAT( price.timestamp, '%e. %M %Y, %H:%i' ) AS time
FROM shops
INNER JOIN prices ON shops.shopid = prices.shopid
INNER JOIN chain ON shop.chainid = chain.chainid
WHERE prices.product = '$product'
AND timestamp > SUBTIME( NOW( ) , '24:0:0.000000' )
ORDER BY price, timestamp DESC
LIMIT 1;

即使今天早上最便宜的商店在白天提高价格(假设我的价格在我的桌子上都有),我怎么能确定我仍然能找到价格最低的商店?另一家商店现在最便宜?

1 个答案:

答案 0 :(得分:0)

您的重写查询:

GAP

注意使用gatttool子查询。 我不确定它是否有效。

一些解释:在每个商店的子查询中选择最新的价格时间戳,service discovery gatttool过滤旧价格,然后SELECT img, chain.chainid, chain.chainname, shops.shopid, shoplocation, shopname, prices.price, DATE_FORMAT(prices.timestamp, '%e. %M %Y, %H:%i') AS time FROM shops INNER JOIN ( SELECT shopid, MAX(timestamp) AS timestamp FROM prices WHERE prices.product = '$product' AND timestamp > SUBTIME(NOW(), '24:0:0.000000') ) prices_tmp ON prices_tmp.shopid = shops.shopid INNER JOIN prices ON shops.shopid = prices.shopid AND prices.timestamp = prices_tmp.timestamp INNER JOIN chain ON shop.chainid = chain.chainid WHERE prices.product = '$product' ORDER BY price DESC LIMIT 1; 将最低价格放在最顶层。