Новости
Документация
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: Akina - 15/12/2011 - 12:39:34
Subject:подсчет фирм в категориях
-----------------
Enter password: **********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test
Database changed
mysql> drop table if exists dle_hte_firms;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table if exists dle_hte_firms_category;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> 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 AUTO_INCREMENT=8 ;
Query OK, 0 rows affected (0.03 sec)

mysql>
mysql> INSERT INTO `dle_hte_firms` (`id`, `cat_id`, `name`) VALUES
-> (1, '1,3,14,63', 'Firm 1'),
-> (2, '10,2,13,63', 'Firm 2'),
-> (3, '1,3,14,63', 'Firm 3'),
-> (4, '54,119,72,24,34,42', 'Firm 4'),
-> (5, '1,3,14,63', 'Firm 5'),
-> (6, '1,3,14,63', 'Firm 6'),
-> (7, '99,100,101,103,108,114,118,450,340,341,355,337,119', 'Firm 7');
Query OK, 7 rows affected (0.02 sec)
Records: 7 Duplicates: 0 Warnings: 0

mysql>
mysql> 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 AUTO_INCREMENT=3 ;
Query OK, 0 rows affected (0.05 sec)

mysql>
mysql> INSERT INTO `dle_hte_firms_category` (`cid`, `cat_name`, `count`) VALUES
-> (1, 'Cat 1', 0),
-> (2, 'Cat 2', 0);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql>
mysql> select * from `dle_hte_firms_category`;
+-----+----------+-------+
| cid | cat_name | count |
+-----+----------+-------+
| 1 | Cat 1 | 0 |
| 2 | Cat 2 | 0 |
+-----+----------+-------+
2 rows in set (0.00 sec)

mysql>
mysql> select * from `dle_hte_firms`;
+----+----------------------------------------------------+--------+
| id | cat_id | name |
+----+----------------------------------------------------+--------+
| 1 | 1,3,14,63 | Firm 1 |
| 2 | 10,2,13,63 | Firm 2 |
| 3 | 1,3,14,63 | Firm 3 |
| 4 | 54,119,72,24,34,42 | Firm 4 |
| 5 | 1,3,14,63 | Firm 5 |
| 6 | 1,3,14,63 | Firm 6 |
| 7 | 99,100,101,103,108,114,118,450,340,341,355,337,119 | Firm 7 |
+----+----------------------------------------------------+--------+
7 rows in set (0.00 sec)

mysql>
mysql> select cat.`cid`, cat.`cat_name`, count(cat.`cid`) `count`
-> from `dle_hte_firms_category` cat, `dle_hte_firms` f
-> where concat(',', f.`cat_id`, ',') like concat('%,', cat.`cid`, ',%')
-> group by cat.`cid`, cat.`cat_name`;
+-----+----------+-------+
| cid | cat_name | count |
+-----+----------+-------+
| 1 | Cat 1 | 4 |
| 2 | Cat 2 | 1 |
+-----+----------+-------+
2 rows in set (0.00 sec)

mysql>


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

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

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



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