Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Сумма из бд (SNAK84) 25/12/2010 - 17:43:26
      Re: Сумма из бд (Diter) 28/12/2010 - 23:15:38

> Original message text:
> From: SNAK84 - 25/12/2010 - 17:43:26
> Subject:Сумма из бд
> -----------------
> есть таблица:
>
> CREATE TABLE IF NOT EXISTS `art` (
> `id` int(11) NOT NULL auto_increment,
> `type` int(3) NOT NULL,
> `action` int(11) NOT NULL,
> `id_user` int(11) NOT NULL,
> PRIMARY KEY (`id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=16 ;
>
>
> в ней есть несколько записей, мне надо одним запросам посчитать суммы по разным параметрам
>
> Я попытался сделать это так:
>
> SELECT
> SUM(a.action) as production,
> SUM(b.action) as attack,
> SUM(c.action) as structure FROM
> ".ARTS." as a,
> ".ARTS." as b,
> ".ARTS." as c WHERE
> (a.type = '1' AND a.id_user = '1') AND
> (b.type = '2' AND b.id_user = '1') AND
> (c.type = '3' AND c.id_user = '1')
>
> Но если если 1 запись с type=1 и две с type=2 в результате сумма по type=1 умножается на количество записей с type=2
>
> помогите решить задачи так чтобы была минимальная нагрузка.
>
>
> еще пробывал так:
>
> SELECT SUM(a.action) as aa, SUM(b.action) as ab FROM
> (SELECT a.action,a.id_user,a.type FROM ".ARTS." as a WHERE type = '1') a,
> (SELECT b.action,b.type FROM ".ARTS." as b WHERE type = '2')
> b WHERE a.id_user = '1'
>
> Но результат такой же
>


From: Diter - 28/12/2010 - 23:15:38
Subject:Сумма из бд
-----------------
То есть Вам нужно найти сумму по столбцу `action` для различных видов `type` для пользователя с id_user=1, так?
Тогда самый простой варинт, это сделать так:

SELECT `type`, SUM(`action`) as value
WHERE `id_user`='1' AND `type` IN (1,2,3)
GROUP BY `type`

а уже на строне приложения значение value будет либо - production для type=1, либо - attack для type=2, и т.д.



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37811



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |