sql >> データベース >  >> RDS >> Mysql

フォローアップ:データベース内のアイテムの割引をモデル化する方法は?

    ProductPricingのデザイン テーブルを使用すると、古い価格データを削除する必要がなくなります(管理者がそのデータに基づくレポートを必要とする場合があります)。上記の説明で、次のように開始します(開始日を変更したので、簡単にわかります。これは、システムが導入されたときの元の価格でした):

    ProductPricing
       1   |    Jan 1, 1970, 00:00:00 |   Jan 1, 2038, 00:00:00  |   10$ |   10$
    

    ここで、リンゴに割引価格を設定し、販売が終了したときのために積極的にシステムを設定したいとします。

    ProductPricing
       1   |    Jan 1, 1970, 00:00:00 |  Dec 20, 2011, 00:00:00  |   10$ |   10$
       1   |   Dec 20, 2011, 00:00:01 |  Dec 26, 2011, 00:00:00  |  7.5$ |   10$
       1   |   Dec 26, 2011, 00:00:01 |   Jan 1, 2038, 00:00:00  |   10$ |   10$
    

    ここで行ったことは次のとおりです。

    1. 既存のレコードを2038タイムスタンプで更新し、endDateTimeStampを変更します 販売の開始を反映するフィールド
    2. 販売を定義するために新しいレコードを挿入します
    3. 通常の価格を再度反映するために、別の新しいレコードを挿入します

    タイムスタンプが重複していないため、データベースに価格を照会すると、単一のレコードを取得することが保証されます。したがって、

    SELECT p.Name, pp.price, pp.original_price
    FROM Product p
    INNER JOIN ProductPricing pp ON pp.productId = p.productId
    WHERE NOW() BETWEEN pp.startDateTimeStamp AND pp.endDateTimeStamp
    

    現在の価格の製品リストが表示されます。




    1. null値を置き換えながら、2つの行を1つにマージします

    2. 2013 MVPサミット:簡単なレビューと展望

    3. PDOのカーソル位置をリセット

    4. MYSQL-LEFTJOINの行が存在しない場合にのみ選択します