相对于这些广告,我有一张广告表和另一张价格表。当用户在应用程序中修改价格时,会在价格表中添加一个新行,其中包括价格和修改价格的日期。
我需要获取所有广告的列表,以及每个广告的第一个注册价格,以及最后一个. 我在同一个价格表上使用了双子查询。
表
ads
IDint |
广告标题varchar |
---|---|
1 | 土豆 |
2 | 番茄 |
prices
IDint |
价格decimal |
价格时间戳timestamp |
ads_idint |
---|---|---|---|
1 | 50 | 2021-02-16 21:12:36 | 1 |
2 | 5 | 2021-02-17 21:12:48 | 1 |
3 | 1000 | 2021-02-17 21:20:40 | 2 |
4 | 900 | 2021-02-18 13:20:49 | 2 |
5 | 700 | 2021-02-18 13:20:49 | 2 |
询问
SELECT ads.ad_title, prices_firsts.price AS price_first, prices_currents.price AS price_current
FROM ads
LEFT JOIN (
SELECT *
FROM prices
GROUP BY id
ORDER BY price_timestamp ASC
) prices_firsts ON prices_firsts.ads_id = ads.id
LEFT JOIN (
SELECT *
FROM prices
GROUP BY id
ORDER BY price_timestamp DESC
) prices_currents ON prices_currents.ads_id = ads.id
GROUP BY ads.id
Esta Consulta devuelve lo siguiente en mi servidor local (XAMPP):
广告标题 | price_first | 价格_当前 |
---|---|---|
土豆 | 50 | 5 |
番茄 | 1000 | 700 |
如您所见,查询结果是正确的, 但是当它在外部提供商的服务器上执行时(我已经在 1&1 IONOS 和 Arsys 西班牙进行了测试),每次执行的结果实际上都不同。有时价格以相反的顺序出现,有时相同的价格出现在两列中......
我需要的?
我需要了解问题是否出在这些提供程序的服务器配置中,或者查询是否错误。
我也乐于接受您可以通过其他方式获取价格(第一个和当前)的想法,即使它是数据库中的另一个结构。