4

いくつかのテーブルからデータを選択するために、sequel pro を使用しています。ある種のループが必要と思われる 2 つのことを行う必要があります。私はSQLでいかなる形式の反復も使用したことがなく、学ぶための初心者レベルのリソースを見つけることができません.

次の2つのタスクを実行する方法を提案したり、基本を学び、そこから理解できるチュートリアルを提案したりできますか?

タスク 1:バージョン履歴テーブルを調べて、特定の日付に適用された特定の ID に関連する履歴レコードを見つけ、そのレコードから値を選択します。履歴テーブルの形式は次のとおりです。

  • id、Item_id、version-created_at、値

例えば

  • 1, 123, 2014-05-01, 754
  • 2, 456, 2014-05-10, 333
  • 3, 123, 2014-05-27, 709

そして、アイテム 123 の値が 2014-05-25 の日付にあったものを見つける必要があります (つまり、レコード id=1 と値 = 754 を見つける必要があります。これは、ターゲット日付より前に作成されたアイテム 123 の最新バージョンだからです)。 .

そこで、アイテム 123 を探してそれらのレコードの日付を比較するテーブルを実行する必要があると考えます。しかし、あるレコードから次のレコードに移動してそれらを比較するという反復を処理する方法がわかりません。

タスク 2: 多数の製品 ID と一致する製品価格を文字列で含む単一のテキスト フィールドを調べて、最低価格の製品の ID を見つけます。文字列の形式は、次のように、価格「p」と ID「i」の一連のペアをランダムな順序で表したものです。

" - :p: 99.8 :i: 3 - :p: 59.0 :i: 5 - :p: 109.8 :i: 18 - :p: 82.45 :i: 46 "

この例では、最低価格 $59 の製品の ID である "5" を見つける必要があります。

したがって、おそらく文字を数えることによって、各 p/i セットをステップスルーする必要があると思いますが、最適な価格を見つけるために反復して比較する方法がわかりません。

少しの助けが大いに役立ちます。

ありがとう。

4

1 に答える 1

0

最初の答えとして、次のようなことができます:-

SELECT value FROM history where id = 123 AND version-created_at = '2014-05-01';

別のタスクでは、バックエンドではなくフロントエンドでこれを試す必要があります。

于 2014-05-29T06:52:56.210 に答える