T-SQL ЗАПРОС ПРОБЛЕМЫ - PullRequest
0 голосов
/ 01 января 2011

У меня есть таблица с именем Summary, и данные в таблице выглядят так:

ID     Type    Name         Parent

1      Act     Rent          Null
2      Eng     E21-01-Rent   Rent
3      Prj     P01-12-Rent   E21-01-Rent
1      Act     Fin           Null
2      Eng     E13-27-Fin    Fin
3      Prj     P56-35-Fin    E13-27-Fin

Я пишу SP, который должен тянуть родителя в зависимости от типа. Здесь всегда тип Act имеет ID 1, Eng имеет ID 2 и Prj имеет ID 3.

Тип ACT родитель всегда NUll, Родитель типа Eng - это Act и тип Prj родительский - Eng

Теперь у меня есть таблица с именем Detail. Я пишу SP для вставки данных таблицы данных в таблицу Summary.

Я передаю идентификатор в качестве параметра:

У меня проблема с родителем. Как мне это получить?

Я всегда могу сказать, когда ID равен 1, тогда parent равен Null, но когда ID равен 2, тогда parent является именем идентификатора 1, аналогично, когда ID равен 3, тогда parent является именем идентификатора 2.

Как мне это получить?

Может ли кто-нибудь помочь мне с этим:

Ответы [ 2 ]

1 голос
/ 02 января 2011

Я думаю, что у вас должен быть первичный ключ (еще один уникальный идентификатор), потому что в этой модели у вас всегда будет первая строка типа, например, у prj всегда будет родительский "E21-01-Rent", и никакчтобы достичь "E13-27-Fin".

Наконец попробуйте этот запрос

Select id,name,(Select Top 1 [Name] From [Summary]
               Where ID=@ID -1) as parent2
 from [Summary]
where id = @ID
1 голос
/ 01 января 2011

Я советую повторно посетить вашу модель данных, но, возможно, это поможет ...

/* @Parent is VarChar(255) because definition is unknown.
   We use Top(1) because in example ID is not unique.
   We assume the ID being passed in is declared as @ID.*/
Declare @ParentID Int
Set @ParentID=(@ID-1)
Declare @Parent VarChar(255)
Set @Parent = (Select Top(1) Name From Summary
               Where ID=@ParentID) 

Просто вставьте @Parent в столбец Parent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...