|
|
|
| Всем привет. нужна Ваша помощь в создание такого запроса.
Начало:
SELECT DISTINCT
em_category_id,em_category_name
FROM
em_category c
JOIN
em_business_group b ON(b.em_business_group_category=c.em_category_id)
WHERE
b.em_company_id=2137
ORDER BY em_category_name
|
Выводит:
189 ATV - техника
2722 Авиа перевозка грузов
2742 Авто перевозка грузов
2743 Авто перевозка пассажиров
111 Автобусы
192 Автодома
5339 Аква перевозка грузов
5340 Аква перевозка пассажиров
302 Аквабайки - гидроциклы
188 Багги, картинги
197 Инструмент общего назначения
2727 Ремонт - водный транспорт
3538 Ремонт - грузовые автомобили
|
Вывод неверен, т.к. не учтено, что в этих категориях нет как таковых субкатегорий, т.е. должно вывести всего лишь 2 записи. Таблица em_business_group связана по полю em_company_id с таблицей субкатегорий...Т.е. сейчас нужно вложеный запрос который бы проверял категорию на наличие субкатегорий, если нет, то не выводить категорию. Прошу помощи. | |
|
|
|
|
|
|
|
для: TetRiska
(22.02.2011 в 17:23)
| | Э... а можно привести результат, что должно вывестить?
PS И если не сложно, прикрепить дамп с таблицами (если они, конечно, не очень секретны), чтобы можно было поэксперементировать на локальной машине - в уме, без отладки, такие запросы тяжелова-то составлять. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 17:27)
| | Вывести должно:
188 Багги, картинги
3538 Ремонт - грузовые автомобили
|
Эти категории содержат субкатегории, поэтому и должны вывестись.
стукни 286909178 или напиши свою, сюда нежелательно выкладывать дамп + будет проще объяснить что по чем. | |
|
|
|
|
|
|
|
для: TetRiska
(22.02.2011 в 17:53)
| | К сожалению, ICQ у меня нет, давайте так разберемся. Таблица субкатегорий у вас как называется? | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 18:07)
| | Вот 2 таблицы субкатегорий
CREATE TABLE `em_service` (
`em_service_id` int(10) unsigned NOT NULL auto_increment,
...
`em_company_id` int(10) unsigned NOT NULL default '0',
`em_business_group_id` int(10) unsigned NOT NULL default '0',
....
PRIMARY KEY (`em_service_id`)
) ENGINE=MyISAM AUTO_INCREMENT=156 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
CREATE TABLE `em_produce` (
`em_produce_id` int(10) unsigned NOT NULL auto_increment,
...
`em_company_id` int(10) unsigned NOT NULL default '0',
`em_business_group_id` int(10) unsigned NOT NULL default '0',
...
PRIMARY KEY (`em_produce_id`)
) ENGINE=MyISAM AUTO_INCREMENT=23615 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
Вот 2 таблицы, что объединены и которые нам дали уже результат.
CREATE TABLE `em_category` (
`em_category_id` int(10) unsigned NOT NULL auto_increment,
...
`em_category_name` varchar(64) collate utf8_unicode_ci NOT NULL default '',
...
PRIMARY KEY (`em_category_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6092 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
CREATE TABLE `em_business_group` (
`em_business_group_id` int(10) unsigned NOT NULL auto_increment,
...
`em_company_id` int(10) unsigned NOT NULL default '0',
...
`em_business_group_category` int(10) unsigned NOT NULL default '0',
...
PRIMARY KEY (`em_business_group_id`)
) ENGINE=MyISAM AUTO_INCREMENT=18773 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
В общей сложности дело обстоит так. Чтобы выбрать нужные категории для нужной компании мы объединяем 2 таблицы: таблицу em_category и таблицу em_business_group по полю em_business_group_category таблицы em_business_group и полю em_category_id таблицы em_category. Получится некий список категорий. Но забыли учесть, что эти категории могут не содержать субкатегорий, т.е. категории некоторые пусты, т.к. небыли заполнены субкатегориями. Выше я привел таблицы субкатегорий. Их 2, т.к. субкатегории тех категорий (списка что мы получили) распределяются по двум таблицам. Вот нужно перед тем как вывести категории, сперва проверить их на наличие субкатегорий. | |
|
|
|
|
|
|
|
для: TetRiska
(22.02.2011 в 18:30)
| | решили задачку _http://forum.sources.ru/index.php?showtopic=326369. всеравно спасибо :) | |
|
|
|