[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разминка с выборкой
vital
Преамбулаю Нужно выбрать из таблички меню. Вложенность - 3 уровня. В приципе, все просто.
SELECT t1.title AS lev1,t2.title AS lev2, t3.title as lev3
FROM test_menu AS t1
JOIN test_menu AS t2 ON t2.parent = t1.id
LEFT JOIN test_menu AS t3 ON t3.parent = t2.id
WHERE t1.id = null


Вернет правильную табличку для одного пнукта(категории меню).
Теперь була. А как сделать так, что бы вернуть все категории?
т.е. что бы как-то так..

SELECT t1.title AS lev1,t2.title AS lev2, t3.title as lev3
FROM test_menu AS t1
JOIN test_menu AS t2 ON t2.parent = t1.id
LEFT JOIN test_menu AS t3 ON t3.parent = t2.id
WHERE t1.title in ( SELECT title FROM test_menu WHERE ISNULL(parent) LIMIT 0,1);

т.е. выстроить ттабличку уровней для каждой категории одним запросом



Спустя 1 минута, 24 секунды (25.10.2010 - 12:20) vital написал(а):
А, да. СОбственно табличка на которой эксперементирую
CREATE TABLE `test_menu` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`parent` INT(10) UNSIGNED NULL DEFAULT NULL,
`title` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_bin',
PRIMARY KEY (`id`)
)

Спустя 9 минут, 21 секунда (25.10.2010 - 12:30) Invis1ble написал(а):
vital
Чесно говоря, мои знания о SQL оставляют желать лучшего, но вроде это
Цитата
WHERE ISNULL(parent)

правильно так
WHERE `parent` IS NULL

по сути вопроса, к сожалению ничего сказать не могу..

Спустя 22 минуты, 59 секунд (25.10.2010 - 12:53) vital написал(а):
Цитата
правильно так

Это вот где эта написано?)
В чем разница?) Мне пользовать функцию нравится больше.

Спустя 28 минут, 19 секунд (25.10.2010 - 13:21) SlavaFr написал(а):
соедини просто т1 а т2 не JOIN a LEFT JOIN

Спустя 3 часа, 7 минут, 47 секунд (25.10.2010 - 16:29) vital написал(а):
Цитата
соедини просто т1 а т2 не JOIN a LEFT JOIN

Нет. Не поможет.

Спустя 3 часа, 51 минута, 13 секунд (25.10.2010 - 20:20) Invis1ble написал(а):
vital
Я же написал
Цитата
Чесно говоря, мои знания о SQL оставляют желать лучшего

и что
Цитата
вроде ... правильно

smile.gif


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.