|
|
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Совсем запутался! Таблица `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........ и в этом духе - но всё не то. Прошу помощи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 22:44:04 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
iova1984, сначала вам надо получить список деток для каждой из основных категорий, подробности см. в факе по деревьям - это сложная часть. А потом к нему приджойнить firm_firmcategory и посчитать каунт - это простая часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 05:26:26 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
С деревом-то понятно... Но я полагаю - тат всё-таки можно 1 запросом (пусть даже и вложенным сделать). Чтобы выдал мне 2 поля: Name | Count(field) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 08:26:26 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
т.е. про дерево вы поняли, а что я как раз один запрос и описывал - нет? не верю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 08:29:49 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
Ну дерево - php придётся задействовать. А я хотел чисто на mysql... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 14:31:18 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
iova1984Ну дерево - php придётся задействовать.а если ещё раз прочитать? tanglirподробности см. в факе по деревьям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 15:11:47 |
|
||
|
Запрос на получение родительской категории и кол-ва элементов в ней
|
|||
|---|---|---|---|
|
#18+
там нет подобных примеров.... пытался сделать по типу FAQ - но число фирм у автосалона мне ровно в 2 раза больше пишет count(), тк каждая фирма относится к 2м подкатегориям - Новые и Подержанные. DISTINCT не советовать. Хотя подозреваю, что реализовать мою задачу нереально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2015, 15:39:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38987440&tid=1833035]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 326ms |

| 0 / 0 |
