create database train
create table city(
city_id int identity(1,1),
city varchar(max)
)
create table train(
train_id int identity(1111,1111),
city_travels varchar(max)
)
insert into city values ('London');
insert into city values ('Chicago');
insert into city values ('NewYork');
insert into city values ('Delhi');
insert into train values ('1,3,4');
insert into train values ('4');
insert into train values ('1,2');
insert into train values ('1,2,3,4');
create table #train(
train_id int,
city varchar(max)
)
declare @count int, @id int,@first int;
declare @train_id int,@index int;
declare @city_travels varchar(max),@city_name varchar(max);
set @city_name=null;
declare train_cursor CURSOR for
select train_id,city_travels from train
open train_cursor
fetch next from train_cursor into @train_id,@city_travels
while (@@fetch_status=0)
begin
set @first=0;
set @index = charindex(',',@city_travels);
if(@index!=0)
begin
if(@first=0)
begin
set @id=convert (int,substring(@city_travels,1,@index-1));
set @city_travels=substring(@city_travels,@index+1,len(@city_travels));
set @city_name=((select city from city where city_id=@id)+',');
set @index=charindex(',',@city_travels);
set @first=1;
end
while(@index!=0)
begin
set @id=convert (int,substring(@city_travels,1,@index-1));
set @city_travels=substring(@city_travels,@index+1,len(@city_travels));
set @index=charindex(',',@city_travels)
set @city_name=(@city_name+(select city from city where city_id=@id)+',');
end
set @id=convert (int,@city_travels);
set @city_name=(@city_name+(select city from city where city_id=@id));
insert into #train values (@train_id,@city_name);
set @city_name=null;
end
else
begin
set @id=convert (int,@city_travels);
set @city_name=(select city from city where city_id=@id);
insert into #train values (@train_id,@city_name);
set @city_name=null;
end
fetch next from train_cursor into @train_id,@city_travels
end
select * from city;
select * from train;
select * from #train;
close train_cursor
deallocate train_cursor
truncate table #train