|
|
|
Выборка с трёх таблиц
|
|||
|---|---|---|---|
|
#18+
Условие: Есть 3 таблицы - product, license, version mysql> select * from product; +----+------+ | id | name | +----+------+ | 1 | pr1 | | 2 | pr2 | | 3 | pr3 | +----+------+ mysql> select * from license; +----+------------+------+ | id | product_id | name | +----+------------+------+ | 1 | 1 | l1 | | 2 | 1 | l2 | | 3 | 2 | ll1 | | 4 | 3 | lll1 | | 5 | 3 | lll2 | | 6 | 3 | lll3 | +----+------------+------+ mysql> select * from version; +----+------------+------+ | id | product_id | name | +----+------------+------+ | 1 | 1 | 4.0 | | 2 | 1 | 4.1 | | 3 | 1 | 4.2 | | 4 | 1 | 4.4 | | 5 | 2 | 1.0 | | 6 | 2 | 1.1 | | 7 | 3 | 0.8 | +----+------------+------+ Т.е. - есть 3 продукта, у каждого из них есть некоторое к-во версий и некоторое число лицензий. Задача: одним запросом вывести таблицу со следующими полями - id продукта, имя продукта, количество лицензий этого продукта и количество версий этого продукта. При вышеизложенных данных, результат должен быть таков +----+------+---------------+---------------+ | id | name | license_count | version_count | +----+------+---------------+---------------+ | 1 | pr1 | 2 | 4 | | 2 | pr2 | 1 | 2 | | 3 | pr3 | 3 | 1 | +----+------+---------------+---------------+ Это вообще реально?!!!! Я могу выбрать что-то одно (либо версии либо лицензии) так: SELECT product.id, product.name, count(license.product_id) FROM product, license WHERE license.product_id = product.id GROUP BY product.id; Но чтобы и версии и лицензии никак :( Помогите, кто чем может!!!! Дамп базы прилагается: CREATE TABLE `license` ( `id` int(8) NOT NULL auto_increment, `product_id` int(8) NOT NULL default '0', `name` varchar(255) default NULL, PRIMARY KEY (`id`,`product_id`), KEY `product_id` (`product_id`) ) AUTO_INCREMENT=7 ; INSERT INTO `license` VALUES (1, 1, 'l1'); INSERT INTO `license` VALUES (2, 1, 'l2'); INSERT INTO `license` VALUES (3, 2, 'll1'); INSERT INTO `license` VALUES (4, 3, 'lll1'); INSERT INTO `license` VALUES (5, 3, 'lll2'); INSERT INTO `license` VALUES (6, 3, 'lll3'); CREATE TABLE `product` ( `id` int(8) NOT NULL auto_increment, `name` varchar(255) default NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=4 ; INSERT INTO `product` VALUES (1, 'pr1'); INSERT INTO `product` VALUES (2, 'pr2'); INSERT INTO `product` VALUES (3, 'pr3'); CREATE TABLE `version` ( `id` int(8) NOT NULL auto_increment, `product_id` int(8) default NULL, `name` varchar(255) default NULL, PRIMARY KEY (`id`), KEY `product_id` (`product_id`) ) AUTO_INCREMENT=8 ; INSERT INTO `version` VALUES (1, 1, '4.0'); INSERT INTO `version` VALUES (2, 1, '4.1'); INSERT INTO `version` VALUES (3, 1, '4.2'); INSERT INTO `version` VALUES (4, 1, '4.4'); INSERT INTO `version` VALUES (5, 2, '1.0'); INSERT INTO `version` VALUES (6, 2, '1.1'); INSERT INTO `version` VALUES (7, 3, '0.8'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 00:26 |
|
||
|
Выборка с трёх таблиц
|
|||
|---|---|---|---|
|
#18+
моежете попробывать таким запросом Код: plaintext 1. 2. 3. 4. 5. 6. 7. -- No microsoft software was used to post this message ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 01:21 |
|
||
|
Выборка с трёх таблиц
|
|||
|---|---|---|---|
|
#18+
sky2k Код: plaintext 1. 2. 3. 4. 5. 6. 7. СПАСИБО!!!! Работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:46 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32909787&tid=1854355]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 503ms |

| 0 / 0 |
