2013-03-17 15 views
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 在数据库中唯一美元率,所以我要乘以查询与得到SEK率。我如何在这个查询中做到这一点?

+1

你是什么意思,因为我有点糊涂了? *我想只乘以7瑞典克朗。我在数据库中只有美元汇率,所以我想在查询中乘以7以获得瑞典克朗汇率。* – 2013-03-17 09:53:10

回答

2

您的问题有点混淆。如果我正确理解您的问题,如果货币等于SEK,您希望将总价值乘以7

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 
+1

好的一个..... :) – Akaash 2013-03-17 09:58:52

+1

哦,很高兴它帮助。 – 2013-03-17 09:59:26

0

我会将所有转换率存储在一张表中。对于SEK,您存储7.0阿尔斯转换率和1.0美元。只需将totalPrice与转换率相乘(使用子查询)

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