Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Вход только любителям АДРЕНАЛЛЛЛЛЛИНА и МЯСА!!!!!! Добавлено: 27.08.08 01:27  

Автор вопроса:  Artyom
Ну что ж, откладываем в сторону написание веб-интерфейсов к БД, говносайтов, GridView, вирусов и прочей фигни и начинаем думать ГОЛОВОЙ.

О Я сказал ГОЛОВОЙ?

Итак.

MS SQL Server
Имеем таблицу.

Categories
(
    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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 27.08.08 13:38
Интересная задача.
Я такое реализовывал только в виде ХП. Одним запросом - х.з.

Ответить

Номер ответа: 4
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #4
Добавлено: 27.08.08 14:45
Тоже интересует данный вопрос в контексте MySQL.

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 27.08.08 14:52
Ты знаешь решение?

Знаю :-P

MySQL


не понял вопроса...

Ну чето не понятного - обработка иерархии одним запросом.

Я такое реализовывал только в виде ХП. Одним запросом - х.з.

Возможно и одним очень хитрым запросом :)

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 27.08.08 14:52
Если да, оно работает на MySQL?

Я не знаю какими возможностями SQL обладает MySQL, вполне возможно что там такую хитрую штуку провенуть не удастся...

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 27.08.08 14:59
Блин, всем надо MySQL :)

Я так чувствую что сегодня сторонников MS SQL станет больше :)

Ответить

Номер ответа: 8
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #8
Добавлено: 27.08.08 14:59
Ну давай, не томи. ;)

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 27.08.08 15:10
Хорошо :)

WITH TempCategories(ParentID, ID, CategoryLevel, CategoryName) AS
(
    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-сайт: www.vbnet.ru
 Профиль | | #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 оно будет выглядеть очень похоже как показал Steel Brand.

ну покажи, заценим :)

Да и почему это MySQL целостность не может обеспечить, тоже не очень понятно.

Насколько я знаком с ситуацией Павла, через несколько дней работы база MySQL перешла в состояние Corrupted, в результате были потеряны данные

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 28.08.08 20:43
Ну что, все уснули?

Ответить

Номер ответа: 14
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #14
Добавлено: 28.08.08 22:55
Я записал в блокнотик, дойдут руки - попытаюсь заставить работать на MySQL :)

Ответить

Номер ответа: 15
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #15 Добавлено: 28.08.08 23:01
А где обещанный адреналин?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам