Как объединить 2 столбца внешнего ключа? - PullRequest
0 голосов
/ 20 мая 2019

У меня 2 стола Кино и Актер. Таблица фильмов имеет 2 столбца: актер 1 и актер 2, которые являются внешними ключами таблицы актеров, в которой есть все актеры.

В запросе SELECT я хочу показать как актера 1, так и актера 2 как один столбец пример (Actor1, Actor2)

Кино стол

Id     MovieName   Producer   Actor1    Actor2
1         X-man      prod1     1           2
2         Ant        Prod2     3           1

Актёрский стол

Id  ActorName
1     Sam
2     Jhon
3     Brick

Результат, который я хочу

Id     MovieName   Producer      Actors
1         X-man      prod1     Sam , Jhon
2         Ant        Prod2     Brick,Sam

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Чтобы ответить на заданный вопрос, вам нужно дважды присоединиться к вашему столу актеров, что-то вроде этого select Movie.id, MovieName, Producer, a1.Name+', '+a2.name as 'Actors' from Movie INNER JOIN Actor a1 on Actor1 = a1.id INNER JOIN Actor a2 on Actor2 = a2.id

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

CREATE TABLE Movie(
    Id int PRIMARY KEY,
    MovieName nvarchar(50),
    Producer nvarchar(50)
    );

CREATE TABLE Actor(
    Id int PRIMARY KEY,
    Name nvarchar(50)
    );

CREATE TABLE MovieActor(
    Id int PRIMARY KEY
    ActorId int,
    MovieId int);
0 голосов
/ 21 мая 2019

Вы можете попробовать это:

Declare @movie table (id int, moviename varchar(50),producer varchar(50),actor1 int, actor2 int)

Declare @Actor table (Id int, Actorname varchar(50))

Insert into @movie values (1,'X-Man','Prod1',1,2)
Insert into @movie values (2,'ANt Man','Prod2',3,1)

insert into @Actor values (1,'Sam')
insert into @Actor values (2,'Jhon')
insert into @Actor values (3,'Brick')


select * from @Actor

select a.id,a.moviename,a.producer,b.Actorname + ',' + c.Actorname as actors from @movie a

join  @Actor b

on a.actor1=b.Id  

join @Actor c on c.Id=a.actor2
...