Страница: 1 | 2 |
Вопрос: Вход только любителям АДРЕНАЛЛЛЛЛЛИНА и МЯСА!!!!!!
Добавлено: 27.08.08 01:27
Автор вопроса: Artyom
Ну что ж, откладываем в сторону написание веб-интерфейсов к БД, говносайтов, GridView, вирусов и прочей фигни и начинаем думать ГОЛОВОЙ.
О Я сказал ГОЛОВОЙ?
Итак.
MS SQL Server
Имеем таблицу.
(
ID
ParentID
Name
)
Думаю поля говорят сами за себя, тип данных не важен, ну для ясности первые два это GUID, последний NVARCHAR(50).
Нужно одним запросом выбрать данные таким образом чтоб получить следующие столбцы:
Путь к категории
В пути к категории должны быть перечислены названия всех родительских категорий.
Например
0 Компьютеры
0 Бытовая техника
1 Компьютеры / Принтеры
1 Компьютеры / Комплектующие
2 Компьютеры / Комплектующие / Процессоры
2 Компьютеры / Комплектующие / ОЗУ
3 Компьютеры / Комплектующие / ОЗУ / DDR
3 Компьютеры / Комплектующие / ОЗУ / DDR2
and so on
Метод должен работать теоритически на любом уровне вложенности (разумеется если только путь к категории не вылезет за пределы возможностей типа NVARCHAR).
Использовать можно любые возможности TSQL
И че?
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 27.08.08 08:16
Ты знаешь решение? Если да, оно работает на MySQL?
Номер ответа: 2
Автор ответа:
Slash
ICQ: 204034
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 27.08.08 12:31
не понял вопроса...
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 27.08.08 13:38
Интересная задача.
Я такое реализовывал только в виде ХП. Одним запросом - х.з.
Номер ответа: 4
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #4
Добавлено: 27.08.08 14:45
Тоже интересует данный вопрос в контексте MySQL.
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 27.08.08 14:52
Знаю
Ну чето не понятного - обработка иерархии одним запросом.
Возможно и одним очень хитрым запросом
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 27.08.08 14:52
Я не знаю какими возможностями SQL обладает MySQL, вполне возможно что там такую хитрую штуку провенуть не удастся...
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 27.08.08 14:59
Блин, всем надо MySQL
Я так чувствую что сегодня сторонников MS SQL станет больше
Номер ответа: 8
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #8
Добавлено: 27.08.08 14:59
Ну давай, не томи.
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 27.08.08 15:10
Хорошо
(
SELECT ParentCategoryID, ID, 0 AS CategoryLevel, convert(nvarchar(500), Name) As CategoryName
FROM Categories
WHERE ParentCategoryID IS NULL
UNION ALL
SELECT e.ParentCategoryID, e.ID, CategoryLevel + 1, convert(nvarchar(500), CategoryName + ' / ' + convert(nvarchar(500), e.Name))
FROM Categories e
INNER JOIN TempCategories d
ON e.ParentCategoryID = d.ID
)
SELECT CategoryLevel, CategoryName
FROM TempCategories ORDER BY CategoryLevel;
Номер ответа: 10
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #10
Добавлено: 27.08.08 15:20
Этот MySql даже целостность данных обеспечить не может. Что уж
говорить о каких-то хитрых запросах.
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 27.08.08 22:43
хз, но имхо на MySQL оно будет выглядеть очень похоже как показал Steel Brand.
Да и почему это MySQL целостность не может обеспечить, тоже не очень понятно.
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 27.08.08 23:48
ну покажи, заценим
Насколько я знаком с ситуацией Павла, через несколько дней работы база MySQL перешла в состояние Corrupted, в результате были потеряны данные
Номер ответа: 13
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #13
Добавлено: 28.08.08 20:43
Ну что, все уснули?
Номер ответа: 14
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #14
Добавлено: 28.08.08 22:55
Я записал в блокнотик, дойдут руки - попытаюсь заставить работать на MySQL
Номер ответа: 15
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #15
Добавлено: 28.08.08 23:01
А где обещанный адреналин?