0

簡単にするために、'trades' と 'rates' という 2 つのテーブルがあります。

trades.useridと=rates.feeでつながっているtrades.rateidrates.rateid

問題は、SELECT が一意の値を返さないことですが、すべての可能性があります。

SELECT r.fee
FROM rates AS r
LEFT JOIN trades AS t
ON r.rateid = t.rateid
WHERE t.userid=(somevalue)

DISTINCTまたはTOP 1、乱雑な順序のため、ここではオプションにできませんでした。ここで注文する必要はありません。

正しくユニークに選択するには?

私はいくつかのrates.fee与えられたものによって適切なものを選択したいだけですtrades.rateidtrades.userid

trades
------
userid rateid total
101    1      
101    1
101    2
101    1

rates
-----
rateid fee
1      0.90
2      0.80
3      0.70

UPDATE trades
    SET total = (someformula) * (above SELECT query goes here)
    WHERE userid = (somevalue)

ありがとうございました。

4

1 に答える 1

1

特定の取引のレートが 1 つしかない場合は、update ... fromT-SQL コンストラクトを使用できます。

UPDATE  t
SET     total = (someformula) * r.fee
FROM    trades AS t
JOIN    rates AS r
ON      r.rateid = t.rateid
WHERE   t.userid = (somevalue)

がレートを一意に識別しない場合rateidは、質問を編集して、どのレートを選択する必要があるかを明確にする必要があります。

于 2012-07-16T05:36:55.767 に答える