-1

クエリでこれを実行できるかどうか疑問に思っていました:

さまざまな製品で行われた入札の表があります

bid_id, product_id, date, price

bid_id はインクリメントされたキーで、product_id は製品詳細の別のテーブルからの外部キーです。

商品の入札価格を引き上げたすべての入札を選択したいと考えています。この表にあるもので、実行できますか?

私自身をより明確にしようとしましょう:各製品について、前回の入札から価格を上げたすべてのディブを取得したいと思います.

例: テーブルに含まれている場合

1, 12202, "2013-09-08 13:41:45", 120
2, 17394, "2013-09-08 13:43:32", 250
3, 12202, "2013-09-08 13:54:11", 170
4, 12202, "2013-09-08 14:05:37", 210

3 行目と 4 行目を出力として取得したいと思います。(1 つの製品に対して複数の行が存在する場合があります)

ありがとう!

4

1 に答える 1

6

「値上げ」とは、その商品の以前の入札額よりも高い入札額を意味していると思われます。

もしそうなら、答えは「はい」です。それはできます。

ああ、おそらくクエリも見たいでしょう。

select b.*
from (select b.*,
             (select max(b2.price)
              from bids b2
              where b2.product_id = b.product_id and
                    b2.bid_id < b.bid_id
             ) as prevmaxprice
      from bids b
     ) b
where b.price > prevmaxprice;

編集:

以前の入札価格から価格を引き上げたい場合、クエリは似ていますが、サブクエリのロジックは少し異なります。

select b.*
from (select b.*,
             (select b2.price
              from bids b2
              where b2.product_id = b.product_id and
                    b2.bid_id < b.bid_id
              order by b2.bid_id desc
              limit 1
             ) as prevprice
      from bids b
     ) b
where b.price > prevprice;
于 2013-09-09T19:17:42.530 に答える