У меня есть член таблицы, ваучер и отставка. Между участниками и ваучерами существует связь, при которой у участников может быть много ваучеров, а у ваучеров может быть много участников.
А также ссылка на отставку таблицы.
Это таблицы:
create table member
(
ID int identity(1,1) primary key not null,
memberno varchar(30),
nameoncard varchar(30)
)
create table voucher
(
id int identity(1,1) primary key not null,
voucherno varchar(30),
memberno varchar(30)
)
insert into member values
('ai001','ali')
, ('ai002','badu')
, ('ai003','cica')
, ('ai004','dudi')
, ('ai005','efi')
, ('ai006','galih')
, ('ai007','heru')
, ('ai008','ina')
, ('ai009','joko')
, ('ai010','lambert')
insert into voucher values
('vc001','ai001')
, ('vc001','ai002')
, ('vc002','ai003')
, ('vc002','ai004')
, ('vc002','ai005')
, ('vc003','ai001')
, ('vc003','ai002')
, ('vc004','ai003')
, ('vc004','ai001')
, ('vc005','ai005')
create table resign
(
id int identity(1,1) primary key not null,
memberno varchar(30),
tanggalresign datetime
)
insert into resign values
('ai005','2019-01-20')
Из таблицы отставки memberno
имеет связанный ваучер, как показано ниже
- memberno ai005 имеет ваучеры vc002 и vc005
- voucherno vc002 имеет memberno ai003, ai004, ai005
- voucherno vc005 имеет memberno ai005
- цикл с шага 1 замените ai005 на ai003, ai004, чтобы получить список, у voucherno есть aai004 затем посмотрим, какой член имел эти ваучеры.
Я получил шесть уровней с шестью сценариями для достижения этой цели.
Есть ли какое-либо решение для создания запроса, чтобы получить всех членов списка во всех ваучерах, связанных с отставкой участника. но мне нужно, как сделать это с помощью автоматического цикла, например, используя CTE и т. д.
Пожалуйста, проверьте шесть сценариев с шестью уровнями здесь: http://sqlfiddle.com/#!18/91256/21