SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.07.2011 18:57:04

steedlover
Участник
Зарегистрирован: 14.07.2011
Сообщений: 2

Запрос выборки вложенных разделов из таблицы

Добрый день, уважаемые коллеги. Задача следующая.
есть таблица, содержашая алиасы разделов, соответственно, у каждого из них есть id и parent, показывающие их вложенность друг в друга. Выглядит это примерно, как на прикрепленной картинке. Нужно составить такой запрос, который бы выбирал только нужные алиасы, но обязательно, зависящие друг от друга по параметрам id и parent. То есть, если в другой ветке разделов попадется подраздел с таким же алиасом, то MySql его отбрасывал.

У меня получился такой запрос:


SELECT t1.id, t1.alias, t1.parent FROM jos_menu AS t1
JOIN `jos_menu` AS t2 ON ( t2.parent = t1.id OR t2.id = t1.parent OR t1.parent =0 )
AND (
t1.alias = 'kabelnaya-produkciya'
OR t1.alias = 'opticheskiy-kabel'
OR t1.alias = 'opticheskiy-kabel-dlya-prokladki-v-grunt'
)
AND (
t2.alias = 'kabelnaya-produkciya'
OR t2.alias = 'opticheskiy-kabel'
OR t2.alias = 'opticheskiy-kabel-dlya-prokladki-v-grunt'
)
 


Вообщем-то я доволен, выводятся нужные ряды. Но они повторяются, это несложно решается с помощью array_unique(), но вот и сам вопрос, а можно ли сделать так чтобы ряды в ответе не повторялись?


Прикрепленные файлы:
Attachment Icon base-snapshot.jpg, Размер: 96,715 байт, Скачано: 345

Неактивен

 

#2 15.07.2011 17:01:26

parkee
Участник
Зарегистрирован: 14.07.2011
Сообщений: 1

Re: Запрос выборки вложенных разделов из таблицы

Неактивен

 

#3 15.07.2011 22:42:34

steedlover
Участник
Зарегистрирован: 14.07.2011
Сообщений: 2

Re: Запрос выборки вложенных разделов из таблицы

Спасибо огромное. Работает. Теперь запрос выглядит так:

SELECT DISTINCT t1.id, t1.alias, t1.parent
FROM jos_menu AS t1
JOIN `jos_menu` AS t2 ON ( t2.parent = t1.id
OR t2.id = t1.parent
OR t1.parent =0 )
AND (
t1.alias = 'kabelnaya-produkciya'
OR t1.alias = 'opticheskiy-kabel'
OR t1.alias = 'opticheskiy-kabel-dlya-prokladki-v-grunt'
)
AND (
t2.alias = 'kabelnaya-produkciya'
OR t2.alias = 'opticheskiy-kabel'
OR t2.alias = 'opticheskiy-kabel-dlya-prokladki-v-grunt'
)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson