0

簡単に説明すると、テーブル games_records からすべてのレコードを取得したいのですが、最も高いファーニ値 (pricelist_furnis_tradevalue.value) にレコードの金額 (= games_records.amount) を掛けたもので並べ替えます。furni 値は pricelist_furnis_tradevalue にあります。さて... pricelist_furnis_tradevalue には、いくつかの家具の複数のエントリがあります。最新のエントリだけを取得したいので、pricelist_furnis_tradevalue.time で並べ替える必要があります。ただし、以下のこのクエリは、家具/レコードごとに pricelist_furnis_tradevalue からすべてのエントリを返します。

SELECT *
FROM games_records 
JOIN pricelist_furnis_tradevalue 
    ON games_records.furni = pricelist_furnis_tradevalue.furni
ORDER BY (pricelist_furnis_tradevalue.value*games_records.amount) DESC

必要な2つのテーブルの構造は次のとおりです

games_records

id      user        furni       amount      time
1       2           4           40          1338052926
2       4           30          90          1338054046

pricelist_furnis_tradevalue

id      furni       value       time
1       2           20          1334065379
2       2           50          1334067445
3       2           100         1334092057
4       4           50          1334065375
4       4           20          1334067436

助けていただければ幸いです!ありがとう!

4

2 に答える 2

0
SELECT * FROM 
    (SELECT *, pricelist_furnis_tradevalue.value*games_records.amount AS 'mult' FROM games_records 
    JOIN pricelist_furnis_tradevalue 
    ON games_records.furni = pricelist_furnis_tradevalue.furni) a
ORDER BY a.mult DESC
于 2012-07-18T19:55:19.607 に答える
0

最大時間のレコードを取得する必要があります。

1 つの方法を次に示します。

SELECT *
FROM games_records join
     (select furni, max(time) as maxtime
      from pricelist_furnis_tradevalue
      group by furni
     ) as maxf
     on games_records.furni = maxf.furni JOIN
     pricelist_furnis_tradevalue 
     ON games_records.furni = pricelist_furnis_tradevalue.furni and
        pricelist_furnis_tradevalue.time = maxf.maxtime
ORDER BY (pricelist_furnis_tradevalue.value*games_records.amount) DESC
于 2012-07-18T19:56:25.090 に答える