Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Разбиение проектов на группы с учетом валюты
Форумы портала PHP.SU » » Работа с СУБД » Разбиение проектов на группы с учетом валюты

Страниц (1): [1]
 

1. jonston - 28 Апреля, 2020 - 04:08:45 - перейти к сообщению
Доброго времени суток.Есть такая задача.Есть таблица проектов с колонками id, name, currency, budget.Колонки budget и currency это цена заказа и валюта.Необходимо выбрать группы до 1000 и свыше 1000 гривен (UAH) с учетом валюты.Валюта либо RUB либо UAH.У меня получился вот такой запрос, но подозреваю, что можно оптимизировать.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT
  3.           (SELECT COUNT(*) FROM projects WHERE IF(currency = 'RUB', budget / 2.8, budget) <= 1000) AS g1,
  4.           (SELECT COUNT(*) FROM projects WHERE IF(currency = 'RUB', budget / 2.8, budget) > 1000) AS g2,
  5.           FROM projects
  6.  

Есть идеи?
2. Мелкий - 28 Апреля, 2020 - 10:42:48 - перейти к сообщению
Если предположить что основное условие у вас записано верно...

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT sum(IF(currency = 'RUB', budget / 2.8, budget) <= 1000),
  2. sum(IF(currency = 'RUB', budget / 2.8, budget) > 1000)
  3. FROM projects
3. jonston - 28 Апреля, 2020 - 13:58:29 - перейти к сообщению
Мелкий пишет:
Если предположить что основное условие у вас записано верно...

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT sum(IF(currency = 'RUB', budget / 2.8, budget) <= 1000),
  2. sum(IF(currency = 'RUB', budget / 2.8, budget) > 1000)
  3. FROM projects


А если групп может быть больше и могут быть еще дополнительные запросы типа > 500 но < 1000?И как оно считает если бюджет IS NULL?

 

Powered by ExBB FM 1.0 RC1