gpt4 book ai didi

mysql - 使用一个表中的同一列和另一表上的两个外键

转载 作者:行者123 更新时间:2023-11-29 18:10:09 25 4
gpt4 key购买 nike

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

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

最佳答案

我认为您正在寻找如下所示的内容。

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 两次表代表;与 cod_pais1 关联的 nombre 出现 1 次,与 cod_pais2 关联的 nombre 出现第 2 次。

结果:

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

<强> DEMO

关于mysql - 使用一个表中的同一列和另一表上的两个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com