请帮我摆脱头痛.. 事先我为我的坏语言道歉,无论是英语还是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;
即使今天早上最便宜的商店在白天提高价格(假设我的价格在我的桌子上都有),我怎么能确定我仍然能找到价格最低的商店?另一家商店现在最便宜?
答案 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;
将最低价格放在最顶层。