1

これらの広告に関連する、広告の表と価格の別の表があります。ユーザーがアプリケーションで価格を変更すると、価格テーブルに新しい行が追加されます。これには、価格と価格が変更された日付が含まれます。

すべての広告と、各広告について、登録された最初の価格と最後の価格のリストを取得する必要があります。同じ価格テーブルで二重サブクエリを使用しました。

テーブル

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 スペインでテストしました)、結果は実行ごとに実質的に異なります価格が逆順に表示されることもあれば、両方の列に同じ価格が表示されることもあります...

何が必要ですか?

問題がこれらのプロバイダーのサーバー構成にあるのか、それともクエリが間違っているのかを理解する必要があります。

また、データベース内の別の構造であっても、別の方法で価格 (最初と現在) を取得するために貢献できるというアイデアも歓迎します。

4

1 に答える 1