Помогите мне найти список зависимостей - PullRequest
1 голос
/ 27 июня 2011

У меня есть две таблицы сотрудников и таблица зависимостей сотрудников.Указания сотрудников, как показано ниже.

insert into E values(1,'Adam')
insert into E values(2,'Bob')
insert into E values(3,'Candy')
insert into E values(4,'Doug')
insert into E values(5,'Earl')
insert into E values(6,'Fran')

Таблица зависимостей сотрудников выглядит следующим образом

insert into Ed values(3,'2')
insert into Ed values(3,'5')
insert into Ed values(2,'1')
insert into Ed values(2,'4')
insert into Ed values(5,'6')

Мне нужно найти список зависимостей, как показано ниже

Eid  Ename     Dname
3     Candy    Bob,Fran

Пожалуйста, помогите мненайти выше.

1 Ответ

1 голос
/ 27 июня 2011

Настройка:

create table E(id int , name varchar(100))

insert into E values(1,'Adam')
insert into E values(2,'Bob')
insert into E values(3,'Candy')
insert into E values(4,'Doug')
insert into E values(5,'Earl')
insert into E values(6,'Fran')

create table Ed(id1 int, id2 int)

insert into Ed values(3,2) 
insert into Ed values(3,5)
insert into Ed values(2,1)
insert into Ed values(2,4)
insert into Ed values(5,6)

Запрос:

select Name,
    stuff((select ',' + e1.name
    from Ed
        join E e1 on
            Ed.id2 = e1.id
    where Ed.id1 = E.id
    for xml path('')), 1, 1, '') as Dependents
from E

Результат:

Name       Dependents
---------- --------------
Adam       NULL
Bob        Adam,Doug
Candy      Bob,Earl
Doug       NULL
Earl       Fran
Fran       NULL

Если вам нужно показать только те, у которых есть иждивенцы:

select *
from
(
    select Name,
        stuff((select ',' + e1.name
        from Ed
            join E e1 on
                Ed.id2 = e1.id
        where Ed.id1 = E.id
        for xml path('')), 1, 1, '') as Dependents
    from E
) tt
where Dependents is not null   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...