【问题标题】:Using same column from one table with two foreign keys on other table使用一个表中的同一列和另一个表上的两个外键
【发布时间】:2018-05-08 14:45:12
【问题描述】:

我必须做一个关于 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;

但是如果我使用同一张表两次就会出错。

【问题讨论】:

  • 使用表别名。在 pais.Cod_pais=R.cod_pais1 上代表 R2 在 pais.Cod_pais=R2.cod_pais2 上加入代表 R2; (我认为这可以解决您遇到的错误)
  • 它不起作用,返回一个空表。谢谢你。

标签: mysql sql key heidisql


【解决方案1】:

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

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

这里的想法是如果你想在表representa中显示nombre相互关联,你需要将表PAIS两次加入表representanombrecod_pais1 关联第 1 次,nombrecod_pais2 关联第 2 次。

结果:

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

DEMO

【讨论】:

  • 非常感谢,我只是反向操作,使用了两次representa和一次pais。你比我的教授XD好得多。
  • @Danvrais: 请阅读Accepting Answer :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多