2013-03-17 2 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 

Я хочу умножать только SEK из 7. У меня есть только USD скорость в базе данных, поэтому я хочу, чтобы умножить его в запросе с для получения SEK тариф. Как я могу сделать это в этом запросе?

+1

Что вы имеете в виду под этим, потому что я немного запутался? * Я хочу умножить только SEK с 7. У меня есть только курс доллара в базе данных, поэтому я хочу умножить его в запросе с 7, чтобы получить ставку SEK. * –

ответ

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

good one ..... :) – Akaash

+1

oh glad it помог. –

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 
Смежные вопросы