2
SELECT user_id, currency, SUM( price ) AS totalPrice, created
FROM accounts WHERE user_id IN ( SELECT users.id FROM users
                                 WHERE country_id ='$con_id' )
AND created BETWEEN  '2013-02-01' AND  '2013-02-28' GROUP BY currency

このクエリは私に次のような結果を与えます

Curreny  totalPrice
SEK      10
USD      10

7からSEKのみを乗算したいのですが、データベースにはUSDレートしかないので、クエリで7を乗算してSEKレートを取得します。このクエリでそれを行うにはどうすればよいですか?

4

3 に答える 3

2

あなたの質問は少し混乱しています。あなたの質問を正しく理解7できれば、通貨が に等しい場合、合計値の値に を掛けてくださいSEK

SELECT  user_id, 
        currency, 
        SUM(price) * IF(currency = 'SEK', 7, 1) totalPrice, 
        created
FROM    accounts
WHERE   user_id
        IN 
        (
            SELECT users.id
            FROM users
            WHERE country_id =  '$con_id'
        ) AND 
        created BETWEEN  '2013-02-01' AND  '2013-02-28'
GROUP   BY currency
于 2013-03-17T09:52:17.283 に答える
0

これを実装する醜い方法は次のとおりです。

SELECT user_id, currency,
       CASE WHEN currency = 'SEK' THEN SUM(price)*7
       ELSE SUM(price) END totalPrice, created
FROM accounts
WHERE user_id
IN ( SELECT users.id FROM users
     WHERE country_id =  '$con_id')
AND created BETWEEN  '2013-02-01' AND  '2013-02-28'
GROUP BY currency
于 2013-03-17T09:53:32.733 に答える
0

すべてのコンバージョン率をテーブルに保存します。SEK の場合、7.0 als 換算レートと vor USD 1.0 を保存します。totalPrice にコンバージョン率を掛けるだけです (サブクエリを使用)。

于 2013-03-17T09:51:38.737 に答える