|
|
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть такой код. Код: sql 1. 2. 3. 4. 5. Написать запрос на выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины). В какую сторону копать? Это вложенный запрос select потом из него вынимать данные или как делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 19:01:04 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
В сторону HAVING COUNT() < 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 20:56:12 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
AkinaВ сторону HAVING COUNT() < 4 Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 21:16:46 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
Ошибся отправил. Вот зная родительский id могу получить его детей. Но как передать все родительские id в этот запрос? Чтобы он нашел все id у которых детей больше 3? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 21:18:39 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
Смотрю пример отсюда. http://www.mysql.ru/docs/gruber/mg11.html Код: sql 1. 2. 3. 4. 5. 6. Примерно так же написал но он пишет об ошибке Как указать внешнюю строку кандидат outer для того чтобы она была передана во внутренний подзапрос? Код: sql 1. 2. 3. 4. 5. 6. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer WHERE `id` IN (SELECT `id` FROM `category` inner2 WHERE outer.`id` = in' at line 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 22:36:34 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
mankingзная родительский id могу получить его детей. Получить можешь, а посчитать - нет? Нет, ты серьёзно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 23:28:26 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
Akinamankingзная родительский id могу получить его детей. Получить можешь, а посчитать - нет? Нет, ты серьёзно? Что серьезно? Как мне перебрать все строки и id каждой передать во вложенный запрос? Вот пример по ссылке у меня не работает, выскакивает ошибка, а должен класть текущую строку-кандидат в outer(псевданим внешнего запроса), для того чтобы она потом во внутреннем запросе использовалась. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2015, 23:57:02 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
mankingКак мне перебрать все строки и id каждой передать во вложенный запрос?Какой ещё вложенный запрос? В постановке задачи mankingзапрос на выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины) (и в её решении) ничего подобного не было. Задача изменилась? Озвучьте новый вариант. Полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 07:20:54 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
tanglir, Сейчас я пытаюсь понять почему не работает код из примера(СООТНЕСЕННЫЕ ПОДЗАПРОСЫ) отсюда http://www.mysql.ru/docs/gruber/mg11.html Написал аналогичный: Код: sql 1. 2. 3. 4. 5. В моем понимании должно происходить следующее(как в статье): 1) Выбрать строку из таблицы `category` и поместить в текущую строку-кандидат outer. 2) Выполнить подзапрос(внутренний) где идет проверка ид этой строки кандидата outer.`id` = inner2.`parent_category_id`. 3) Определить будет ли эта строка кандидат попадать в результирующий запрос после проверки того что вернул подзапрос и конструкции WHERE. 4) Выбрать новую строку кандидат и проверять её снова. Вместо этот phpmyadmin пишет об ошибке: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer WHERE `id` IN (SELECT `id` FROM `category` inner2 WHERE outer.`id` = in' at line 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 07:57:17 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
manking, вам даже форумная подсветка синтаксиса на ошибку намекает :) "outer" - зарезервированное слово, используйте что-то другое или обрамляйте его бэктиками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 08:43:06 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
mankingВ моем понимании должно происходить следующее Когда ты вытащишь все данные из таблицы сервера в переменные программы - оно может выглядеть так. А на сервере оно выглядит совершенно иначе. Приблизительно так: Код: sql 1. 2. 3. 4. А если нужны все данные по этой категории, то привлекаем ещё одну копию таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 09:18:12 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
Правда, последний запрос преднамеренно неверный - он не выведет категории, не имеющие потомков. Это тебе в качестве развлечения- заменить декартово произведение на стороннее связывание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 09:19:37 |
|
||
|
Работа с вложенными категориями.
|
|||
|---|---|---|---|
|
#18+
или выведет? чёта лень думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2015, 09:20:08 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39130247&tid=1832366]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
204ms |
get topic data: |
11ms |
get forum data: |
5ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 552ms |

| 0 / 0 |
