Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Вниз

Как написать запрос к таблице (   Найти похожие ветки 

 
oleon   (2002-12-23 18:48) [0]

Как написать запрос чтобы он возвращал ID-шники всех детей?
ну т.е. ID шники записей, которые входят в эту ветку?


 
oleon   (2002-12-23 18:49) [1]

таблица ID, GROUPID, NAME


 
Delirium   (2002-12-23 19:11) [2]

CREATE procedure ap_UnrollingTreeKeys (
@StartNode varchar(50),
@idNode sysname,
@idParent sysname,
@TableName sysname )
as
exec("
set nocount on
select "+@idNode+" into #tmp
from "+@TableName+" where "+@idNode+"="+@StartNode+"
while exists(select "+@idNode+" from "+@TableName+"
where ("+@idParent+" in (select "+@idNode+" from #tmp))
and ("+@idNode+" not in (select "+@idNode+" from #tmp)))
insert #tmp select "+@idNode+" from "+@TableName+"
where ("+@idParent+" in (select "+@idNode+" from #tmp))
and ("+@idNode+" not in (select "+@idNode+" from #tmp))
set nocount off
select "+@idNode+" from #tmp order by "+@idNode+"
set nocount on
drop table #tmp
")




 
asmith   (2002-12-23 19:37) [3]

Почитай в MSSQL Server BOL статью "Expanding Hierarchies"


 
oleon   (2002-12-24 15:08) [4]

спасибо вам господа(товарищи) ...


 
oleon   (2002-12-24 15:33) [5]

Выдает такую ошибку :
Server: Msg 8101, Level 16, State 1, Line 7
An explicit value for the identity column in table "#tmp" can only be specified when a column list is used and IDENTITY_INSERT is ON.


 
sniknik   (2002-12-24 15:54) [6]

таблица ID, GROUPID, NAME
ID наверное Автоинкремент?

или делай в #tmp его простым числом. соответственно таблицу сначала создавать потом вместо select into insert into.
либо отключи для #tmp
SET IDENTITY_INSERT #tmp ON
(интересно пройдет для еще несозданной таблици?)


 
Polevi   (2002-12-24 18:15) [7]

CREATE FUNCTION AccStateIDsToTable (@ID INT)
RETURNS @T TABLE (ID INT, Level INT) AS
BEGIN
DECLARE @level INT
SET @Level=0

INSERT INTO @T (ID,Level) VALUES (@ID,0)
while exists(SELECT * FROM @T T, YourTable YT WHERE T.level=@level and YT.Owner=T.ID)
begin
INSERT @T (ID, level) SELECT YT.ID, @level+1 from @T T, YourTable YT WHERE T.level=@level and YT.Owner=T.ID
SET @level=@level+1
end

RETURN
END





Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
3-62424
valmont
2002-12-26 20:05
2003.01.20
DBGrid и его шапка


3-62349
Sergey13
2002-12-27 11:34
2003.01.20
Песенка ослика-ораклиста 8-)


1-62520
Ag2002
2003-01-10 10:58
2003.01.20
Изменение значения


1-62476
GRish
2003-01-10 08:41
2003.01.20
Заковырка про TFrame


1-62459
Петр
2003-01-10 05:26
2003.01.20
Help please...Работа с формой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский