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




MySQL.RU - Webboard



Вернуться
Сложный подсчет при помощи SELECT (Константин) 14/04/2010 - 06:26:33
      Re: Сложный подсчет при помощи SELECT (Константин) 14/04/2010 - 07:28:25
      Re: Сложный подсчет при помощи SELECT (bac) 14/04/2010 - 19:20:37
      Re: Сложный подсчет при помощи SELECT (Константин) 15/04/2010 - 04:58:35
      Re: Сложный подсчет при помощи SELECT (Константин) 19/04/2010 - 15:03:55
      Re: Сложный подсчет при помощи SELECT (bac) 19/04/2010 - 20:16:23
      Re: Сложный подсчет при помощи SELECT (Константин) 20/04/2010 - 13:12:39
      Re: Сложный подсчет при помощи SELECT (bac) 20/04/2010 - 18:22:09
      Re: Сложный подсчет при помощи SELECT (Константин) 21/04/2010 - 13:36:37

> Original message text:
> From: Константин - 14/04/2010 - 06:26:33
> Subject:Сложный подсчет при помощи SELECT
> -----------------
> Уважаемые форумчане, помогите разобраться. Очень нужно!
> Нужно при помощи команд MySQL подсчитать процент выполненной работы.
> В Joomla при помощи компонента fabrik созданы 2 таблицы. Одна сводная, вторая подробная по ведению определенной работы.
> В первой таблице в определенном столбце должна расчитываться формула командами MySQL, которая должна считать процент выполненной работы, то есть количество найденных строк с определенным наименованием и датой, должно быть поделено на количество найденных строк с тем же определенным наименованием но без даты (общее кол-во) и умножено на 100% - это значение и нужно, чтобы вывелось как результат выполнения формулы.
> Я попробовал сделать так: (но почему-то не получается)
>
> SELECT @a:=FOUND_ROWS() `ved_name`
> FROM `ved`,`pro`
> WHERE `ved_name` LIKE `pro_name`;
> SELECT @b:=FOUND_ROWS() `ved_name`,`ved_dpbegin`
> FROM `ved`,`pro`
> WHERE `ved_dpbegin` NOT LIKE '0000-00-00 00:00:00'
> AND `ved_name` LIKE pro_name;
> SELECT @b/@a*100;
>


From: bac - 14/04/2010 - 19:20:37
Subject:Сложный подсчет при помощи SELECT
-----------------
Давайте рассмотрим, что вы написали.
SELECT @a:=FOUND_ROWS() `ved_name`
FROM `ved`,`pro`
WHERE `ved_name` LIKE `pro_name`;

В этом запросе (как в прочем и следующий) результат прикольный:
1. у вас будет выдана таблица из одной колонки
`ved_name` - содержащей во всех строках, а их столько сколько будет во внутреннем объединении двух таблиц `ved` и `pro`
2. предикат LIKE обычно используется для нечеткого сравнения (например с шаблоном) это в вашем случает так?

SELECT @b:=FOUND_ROWS() `ved_name`,`ved_dpbegin`
FROM `ved`,`pro`
> WHERE `ved_dpbegin` NOT LIKE '0000-00-00 00:00:00'
> AND `ved_name` LIKE pro_name;

Поэтому делаем так

SELECT b.cnt/a.cnt*100 FROM (
SELECT `ved_name`,COUNT(*) as cnt
FROM `ved`,`pro`
WHERE `ved_name`=`pro_name` AND
`ved_dpbegin` NOT LIKE '0000-00-00 00:00:00'
GROUP BY ved_name) b,
(
SELECT `ved_name`, COUNT(*) as cnt
FROM `ved`,`pro`
WHERE `ved_name`=`pro_name`
GROUP BY ved_name) a
WHERE b.ved_name=a.ved_name
ORDER BY ved_name;



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

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

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



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