在一个表中使用相同的列,在另一个表上使用两个外键

时间:2017-11-24 14:56:38

标签: mysql sql key heidisql

我必须对SQL进行练习,我有两个表:

create table REPRESENTA (
cod_pais1 varchar (5),
cod_pais2 varchar (5),
primary key(cod_pais1,cod_pais2));
insert into representa values('p002','p003');
insert into representa values('p001','p004');

create table PAIS(
Cod_pais varchar (5)primary key unique,
nombre varchar (25) not null,
continente varchar (25)not null,
clubes numeric (9));
insert into pais values('p001','rusia','europa','10');
insert into pais values('p002','francia','europa','3');
insert into pais values('p003','guayana francesa','america','1');
insert into pais values('p004','uzbekistan','asia','8');
insert into pais values('p005','nigeria','africa','14');

我必须进行咨询,以显示REPRESENTA表,但使用与PAIS表相关的名称。教授不允许使用子选择。

我试过

select pais.nombre as A, pais.nombre as B from pais join representa R  on          
pais.Cod_pais=representa.cod_pais1 join representa on  
pais.Cod_pais=  representa.cod_pais2;

但如果我两次使用同一个表,则会出错。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找类似下面的内容。

select p1.nombre as a, p2.nombre as b
from representa R
join PAIS p1
on p1.Cod_pais = R.cod_pais1
join PAIS p2
on p2.cod_pais = R.cod_pais2

这里的想法是,如果您想在表nombre中显示彼此关联的representa,则需要将表PAIS两次加入表representa;与nombre相关联的cod_pais1的1次和与nombre相关联的cod_pais2的第2次。

<强>结果:

+---------+------------------+
|    a    |        b         |
+---------+------------------+
| francia | guayana francesa |
| rusia   | uzbekistan       |
+---------+------------------+

<强> DEMO