0

列(ブランド、名前、ID、時間、価格)を持つテーブルを取得し、同じ行に以前の価格を追加しようとしているので、新しい列(ブランド、名前、ID、時間、価格、prev_price)。この価格では、prev_priceは両方とも整数です。

私が直面している課題は、私が使用しているデータベースには、それぞれに異なる変数のホストがあるということです。例:ブランドA、B、C、D名前:1〜100(ブランドごとに異なります)id:80〜300(ブランドごとに異なります)

ブランドと名前が一定に保たれているテーブルの例とprev_priceファクターに含めるもの

ブランド名ID時間価格prev_price
A 25 80 1103 NULL
A 25 80 2105103
A 25 81 1 24 NULL
A 25 81 2 24 0
A 25 81 3 14 -10

誰かがこれを行う方法を推奨するのを手伝ってもらえますか?

4

2 に答える 2

0

time最初に各(brand,name,id)トリプルの前を決定し、次にその時間に自己参加してprev_time:を抽出する必要があると思います。

SELECT mytable.*, prev.price AS prev_price
FROM   mytable
  LEFT JOIN (
    SELECT   mytable.*, MAX(t2.time) AS prev_time
    FROM     mytable LEFT JOIN mytable AS prev ON
             prev.brand = mytable.brand
         AND prev.name  = mytable.name
         AND prev.id    = mytable.id
         AND prev.time  < mytable.time
    GROUP BY mytable.brand, mytable.name, mytable.id, mytable.time
  ) AS pairs USING (brand, name, id, time)
  LEFT JOIN mytable AS prev ON
        prev.brand = pairs.brand
    AND prev.name  = pairs.name
    AND prev.id    = pairs.id
    AND prev.time  = pairs.prev_time
于 2012-06-28T22:11:15.123 に答える
0

その場合は、次のことを試してください。

Select mytable.*, x.price AS prev_price
FROM mytable LEFT JOIN
    (SELECT * FROM mytable) AS x ON
    mytable.id = x.id
    AND mytable.brand = x.brand
    AND mytable.name = x.name
    AND mytable.time = x.time + 1
于 2012-06-29T00:34:37.310 に答える