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




MySQL.RU - Webboard



Вернуться
подсчет фирм в категориях (Дмитрий) 14/12/2011 - 23:12:16
      Re: подсчет фирм в категориях (Akina) 14/12/2011 - 23:15:28
      Re: подсчет фирм в категориях (Дмитрий) 14/12/2011 - 23:34:59
      Re: подсчет фирм в категориях (Akina) 15/12/2011 - 12:39:34
      Re: подсчет фирм в категориях (Дмитрий) 15/12/2011 - 18:45:10

> Original message text:
> From: Дмитрий - 14/12/2011 - 23:12:16
> Subject:подсчет фирм в категориях
> -----------------
> Здравствуйте, необходимо подсчитать количество фирм в категориях. Одна фирма может быть в нескольких категориях. ID категорий перечислены в поле cat_id в таблице фирм.
>
> SELECT cat.cid, (SELECT COUNT(*) FROM dle_hte_firms as f WHERE f.cat_id REGEXP '[[:<:]]('+cat.cid+')[[:>:]]' AND f.approve = 1) as count FROM dle_hte_firms_category as cat
>
> необходимо примерно таким запросом подсчитать количество... Но вот проблема, как передать cat.cid в регулярное выражение? Если делать как у меня, то не верно считает, если подставить цифру, то верно. Вообще цифры получается на много больше чем на самом деле.
>


From: Дмитрий - 14/12/2011 - 23:34:59
Subject:подсчет фирм в категориях
-----------------
CREATE TABLE IF NOT EXISTS `dle_hte_firms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cat_id` varchar(150) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;

INSERT INTO `dle_hte_firms` (`id`, `cat_id`, `name`) VALUES
(1, '1,3,14,63', 'Фирма 1'),
(2, '10,2,13,63', 'Фирма 2'),
(3, '1,3,14,63', 'Фирма 3'),
(4, '54,119,72,24,34,42', 'Фирма 4'),
(5, '1,3,14,63', 'Фирма 5'),
(6, '1,3,14,63', 'Фирма 6'),
(7, '99,100,101,103,108,114,118,450,340,341,355,337,119', 'Фирма 7');

CREATE TABLE IF NOT EXISTS `dle_hte_firms_category` (
`cid` mediumint(5) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(100) NOT NULL DEFAULT '',
`count` mediumint(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

INSERT INTO `dle_hte_firms_category` (`cid`, `cat_name`, `count`) VALUES
(1, 'Крыши', 0),
(2, 'Двери', 0);


Выполнив:
SELECT cat.cid, (SELECT COUNT(*) FROM dle_hte_firms as f WHERE f.cat_id REGEXP '[[:<:]]('+cat.cid+')[[:>:]]') as count FROM dle_hte_firms_category as cat

получаем (неверное):
1 7
2 2

Выполняя по отдельности:
SELECT COUNT(*) FROM dle_hte_firms as f WHERE f.cat_id REGEXP '[[:<:]](1)[[:>:]]'
получаем верное 4

SELECT COUNT(*) FROM dle_hte_firms as f WHERE f.cat_id REGEXP '[[:<:]](2)[[:>:]]'
получаем верное 1



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

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

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



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