Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на получение родительской категории и кол-ва элементов в ней / 7 сообщений из 7, страница 1 из 1
18.06.2015, 22:44:04
    #38987352
iova1984
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
Здравствуйте! Совсем запутался!
Таблица `firmcategory` (категории фирм):

Id | Name | ParentId
1 | Автосалоны | NULL
2 | Легковые | 1
3 | Грузовые | 1
4 | Спецтехника | 1
5 | Подержанные | 2
6 | Новые | 2
7 | Подержанные | 3
8 | Новые | 3
9 | Подержанные | 4
10 | Новые | 4
11 | Запчасти | NULL
12 | Шины | 11
13 | Диски | 11

Таблица `firm_firmcategory` (соответствия фирм к их категориям)
FirmId | FirmCategory
1 | 5
1 | 6
2 | 5
2 | 6
3 | 5
3 | 6

Нужно:
Получить название категории (firmcategory.Name), для которых ЕСТЬ фирма + число фирм в данной категории. Как видно, все 3 фирмы (FirmId=1,2,3) являются Автосалонами, торгующими как Новыми, так и Подержанными авто. Должно выводиться "Автосалоны (3)". Категория Запчасти - НЕ выводится, тк в таблице соответствий - нет ни 11, ни 12 id (это шины и диски, относящиеся к Запчастям).

Как видите, в таблицу соответствий кладутся КОНЕЧНЫЕ id-категорий. 5 и 6 - это значит, что фирма привязана к Автосалонам (Новым и Подержанным авто).
Патылся горолдить запросы SELECT t1.Id, t1.Name, COUNT(t2.FirmCategoryId) FROM `firmcategory` AS t1 LEFT OUTER JOIN `firm_firmcategory` AS t2 ON t1.Id=t2.FirmCategoryId LEFT OUTER JOIN `firmcategory` as t3 ON t3.Id=t1.ParentId GROUP BY........ и в этом духе - но всё не то. Прошу помощи!
...
Рейтинг: 0 / 0
19.06.2015, 05:26:26
    #38987411
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
iova1984, сначала вам надо получить список деток для каждой из основных категорий, подробности см. в факе по деревьям - это сложная часть. А потом к нему приджойнить firm_firmcategory и посчитать каунт - это простая часть.
...
Рейтинг: 0 / 0
19.06.2015, 08:26:26
    #38987437
iova1984
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
С деревом-то понятно... Но я полагаю - тат всё-таки можно 1 запросом (пусть даже и вложенным сделать). Чтобы выдал мне 2 поля: Name | Count(field)
...
Рейтинг: 0 / 0
19.06.2015, 08:29:49
    #38987440
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
т.е. про дерево вы поняли, а что я как раз один запрос и описывал - нет? не верю :)
...
Рейтинг: 0 / 0
19.06.2015, 14:31:18
    #38988085
iova1984
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
Ну дерево - php придётся задействовать. А я хотел чисто на mysql...
...
Рейтинг: 0 / 0
19.06.2015, 15:11:47
    #38988168
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
iova1984Ну дерево - php придётся задействовать.а если ещё раз прочитать?
tanglirподробности см. в факе по деревьям
...
Рейтинг: 0 / 0
19.06.2015, 15:39:38
    #38988243
iova1984
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на получение родительской категории и кол-ва элементов в ней
там нет подобных примеров.... пытался сделать по типу FAQ - но число фирм у автосалона мне ровно в 2 раза больше пишет count(), тк каждая фирма относится к 2м подкатегориям - Новые и Подержанные. DISTINCT не советовать. Хотя подозреваю, что реализовать мою задачу нереально.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на получение родительской категории и кол-ва элементов в ней / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]