Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивная таблица 
V
    Опции темы
Gregoryy
Дата 12.5.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: нет
Всего: 1



Народ прошу помощи с запросом
Есть таблица которая имеет несколько уровней
Id    decimal(18, 0)    Unchecked
IdServesLivel1    decimal(18, 0)    Unchecked
IdServesLivel2    decimal(18, 0)    Unchecked
Name    nvarchar(50)    Unchecked
Есть данные например вот такие 
1    0    0    Продажа
2    1    0    Розничная
3    1    2    Холодильник
4    1    0    Оптовая
5    1    4    СВ Печи

Мне надо в гриде надо вывести их вот так 
Продажа Розничная Холодильники
Продажа Оптовая СВ Печи
И т.д.
Как мне правильно составить запрос.
Или подскажите пожалуйста другой вариант реализации. Заранее СПАСИБО

Это сообщение отредактировал(а) Gregoryy - 12.5.2009, 18:32
PM MAIL ICQ   Вверх
Akina
Дата 12.5.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Количество уровней дерева ограничено?



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gregoryy
Дата 12.5.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: нет
Всего: 1



Цитата(Akina @ 12.5.2009,  18:51)
Количество уровней дерева ограничено?

Да. Их только 3 
Главный когда IdServesLivel1 и IdServesLivel2 равен 0
Под уровень когда IdServesLivel1 не равен 0 и IdServesLivel1 равен 0
Под под уровень когда IdServesLivel1 IdServesLivel1 не равен 0 и IdServesLivel1 не равен 0
PM MAIL ICQ   Вверх
Akina
Дата 12.5.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



ну так вперёд... первый запрос выбирает корни
Код

(
select * 
from table
where IdServesLivel1 = 0 and  IdServesLivel2 = 0
) as q1

второй - ветви
Код

(
select * 
from table
where IdServesLivel1 > 0 and  IdServesLivel2 = 0
) as q2

третий - листья 
Код

(
select * 
from table
where IdServesLivel1 > 0 and  IdServesLivel2 > 0
) as q3

и собрать всё в кучку
Код

select q1.name, q2.name, q3.name
from 
(
  q1
  inner join q2
  on q1.id = q2.IdServesLivel1 
)
inner join q3
on q1.id = q2.IdServesLivel1 and q2.id = q3.IdServesLivel2

PS. Потом можно всё собрать в один запрос.
PPS. результат не проверял - но идея от этого не меняется.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gregoryy
Дата 13.5.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: нет
Всего: 1



Akina, 
Спасибо, а у меня получился вот такой запросик
Код

select a.name, (select b.name from ServiceType b where b.id = a.IdServesLivel2) as lvl2, (select c.name from ServiceType c where c.id = a.IdServesLivel1) as lvl1 from ServiceType a where a.IdServesLivel2 > 0

Осталось засунуть это в Бизнес логику и можно продолжать работать  smile 

Это сообщение отредактировал(а) Gregoryy - 13.5.2009, 10:03
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0978 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.