2013-12-16 1 views
1

Ребята У меня есть запрос, который будет вычислять определенную сумму, такую ​​же логику, тот же код, но с другим предложением where, могу ли я сделать это в одном запросе? Пример:Рассчитайте две разные суммы с двумя разными, где в одном запросе в mysql

Select SUM(mi.myitem_price * msi.my_item_quantity) as order_sum from sometable where mi.myitem_order_id = 'somevalue'; 

второй запрос:

Select SUM(mi.myitem_price * msi.my_item_quantity) as location_sum from sometable where mi.myitem_location_id = 'somevalue'; 

Чтобы сделать это ясно, что первый запрос будет вычислять все заказы в разных местах, в то время как второй запрос будет рассчитывать только на месте. Мне нужно получить order_sum и location_sum одновременно с разными значениями.

+0

да, вы можете сделать это – uvais

ответ

1

Вы можете попробовать сделать это таким образом (с условной агрегации)

SELECT SUM(CASE WHEN mi.myitem_order_id = 'somevalue' 
      THEN mi.myitem_price * msi.my_item_quantity END) order_sum, 
     SUM(CASE WHEN mi.myitem_location_id = 'somevalue' 
      THEN mi.myitem_price * msi.my_item_quantity END) location_sum 
-- WHERE mi.myitem_order_id = 'somevalue' 
-- OR mi.myitem_location_id = 'somevalue' 
    FROM sometable 
+0

Очень приятно, я буду определенно попробуйте это. Большое спасибо человеку. – user2881063

+0

Можете ли вы сослаться на мое сообщение выше, я его отредактировал, спасибо – user2881063

+0

В своем обновлении к вопросу, который вы говорите, * рассчитать все заказы в разных местах *, и все же у вас есть условие 'mi.myitem_order_id = 'some value' ', в котором пункт ..? – peterm

0

Вы можете использовать запрос, как это также

SELECT (Select SUM(mi.myitem_price * msi.my_item_quantity) 
from sometable AS mi where mi.myitem_order_id = 'somevalue') as order_sum, 
(Select SUM(mi.myitem_price * msi.my_item_quantity) 
from sometable AS mi where mi.myitem_location_id = 'somevalue') as location_sum 
Смежные вопросы