|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
40828
|
|