-2

SOの親愛なる友人の皆さん、こんにちは。

私はこのテーブルを持っています:

PRECIOS

+---------+--------+-----------+-------------+------------+
| priceID | itemID | priceCash | pricePoints | priceDate  |
+---------+--------+-----------+-------------+------------+
|       1 |      1 |     30.00 |          90 | 2012-03-05 |
|       2 |      2 |     40.00 |         120 | 2012-03-05 |
|       6 |      2 |     50.00 |          50 | 2012-03-07 |
|       7 |      2 |     55.00 |          50 | 2012-03-07 |
+---------+--------+-----------+-------------+------------+

アイテム

+--------+----------------------+-------------+------------+----------+---------------+---------------+
| itemID | itemName             | itemWarning | itemUrgent | itemType | itemVipPoints | itemExistence |
+--------+----------------------+-------------+------------+----------+---------------+---------------+
|      1 | Lubricante Orgasmix  |          20 |         10 |        2 |             3 |           300 |
|      2 | Anillo Vibrador      |          50 |         50 |        2 |            50 |           120 |
|      3 | Crema Chantilly      |           5 |         20 |        1 |             0 |           500 |
|      4 | Caribe Cooler        |          10 |          4 |        1 |             0 |           100 |
|      5 | Cacahuates Japoneses |          20 |         10 |        1 |             0 |           400 |
|      6 | Cerveza Sol (lata)   |          12 |        112 |        1 |             0 |           200 |
|      7 | Chocolate derretido  |          20 |         10 |        1 |             0 |           200 |
+--------+----------------------+-------------+------------+----------+---------------+---------------+

次のようなテーブルを取得する必要があります。

  • itemTypeは「2」である必要があります
  • itemIDが必要です
  • itemNameは必須です
  • priceCashが必要です
  • itemExistenceは>0でなければなりません

しかし、(私にとっての)主な問題は、一意のアイテムごとに最新のpriceCashを取得する必要があることです。

たとえば、ご覧のとおり、itemID=2には3つの価格があります。この場合、最後の1つ(55.00)だけをテーブルに表示する必要があります。

だから、簡単に言えば:私はこれを取得する必要があります:

+--------+---------------------+-----------+
| itemID | itemName            | priceCash |
+--------+---------------------+-----------+
|      1 | Lubricante Orgasmix |     30.00 |
|      2 | Anillo Vibrador     |     55.00 |
+--------+---------------------+-----------+

しかし、私の最良の結果は次のようなものです:(

+--------+---------------------+-----------+
| itemID | itemName            | priceCash |
+--------+---------------------+-----------+
|      1 | Lubricante Orgasmix |     30.00 |
|      2 | Anillo Vibrador     |     40.00 |
|      2 | Anillo Vibrador     |     50.00 |
|      2 | Anillo Vibrador     |     55.00 |
+--------+---------------------+-----------+

私は4月15日に5USDをPaypalでこれについて私を助けることができる人にチップします:)約束。

解決

kajから親切に提供

select it.itemID, it.itemName, p.priceCash
from items it
  inner join precios p on p.itemID = it.itemID
  inner join (select itemID, max(priceID) latestPriceID
              from precios
              group by itemID) latestPrice on latestPrice.itemID = p.itemID and latestPrice.latestPriceID = p.priceID
where it.itemType = 2
  and it.itemExistence > 0

気になる人のために、それは彼らが性的快楽のためにあらゆる種類のものを売るモーテルのためのデータベースについてです。

ありがとう。

4

2 に答える 2

2

priceDatesfor = 2が重複していることitemIDを考えると、最新の価格は を使用して決定できると仮定しpriceIDます。したがって、基本的には、アイテムごとの最新の価格を見つけて、その時点で関連する価格を抽出するためのクエリが必要です。

次のようなものが機能するはずです。

select it.itemID, it.itemName, p.priceCash
from items it
  inner join precios p on p.itemID = it.itemID
  inner join (select itemID, max(priceID) latestPriceID
              from precios
              group by itemID) latestPrice on latestPrice.itemID = p.itemID and latestPrice.latestPriceID = p.priceID
where it.itemType = 2
  and it.itemExistence > 0
于 2012-04-11T18:56:44.757 に答える
-1
 select x.itemID, x.itemName, y.priceCash from items x, precios y
 WHERE itemType=2 and x.itemID=y.itemID and x.itemExistence > 0 
 and y.priceID = (select max(t.priceID) from precios t where x.itemID=t.itemID)
 group by x.itemID order by y.priceDate;
于 2012-04-11T18:58:12.290 に答える