これらの広告に関連する、広告の表と価格の別の表があります。ユーザーがアプリケーションで価格を変更すると、価格テーブルに新しい行が追加されます。これには、価格と価格が変更された日付が含まれます。
すべての広告と、各広告について、登録された最初の価格と最後の価格のリストを取得する必要があります。同じ価格テーブルで二重サブクエリを使用しました。
テーブル
ads
IDint |
ad_titlevarchar |
---|---|
1 | ポテト |
2 | トマト |
prices
IDint |
価格decimal |
price_timestamptimestamp |
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):
ad_title | price_first | price_current |
---|---|---|
ポテト | 50 | 5 |
トマト | 1000 | 700 |
ご覧のとおり、クエリの結果は正しいです が、外部プロバイダーからのサーバーで実行すると (1&1 IONOS と Arsys スペインでテストしました)、結果は実行ごとに実質的に異なります。価格が逆順に表示されることもあれば、両方の列に同じ価格が表示されることもあります...
何が必要ですか?
問題がこれらのプロバイダーのサーバー構成にあるのか、それともクエリが間違っているのかを理解する必要があります。
また、データベース内の別の構造であっても、別の方法で価格 (最初と現在) を取得するために貢献できるというアイデアも歓迎します。