2017-11-24 3 views
0

を同じカラムを使用して、私は2つのテーブル得まし:私はSQLに運動をしなければならない他のテーブルの上に2つの外部キーであるテーブルから

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; 

と試みたが、私は二度同じテーブルを使用している場合はエラーになります。

+0

表の別名を使用してください。代理人R on pais.Cod_pais = R.cod_pais1 join representa R2 on pais.Cod_pais = R2.cod_pais2; (私はこれがあなたが持っているエラーを解決すると思う) – pringi

+0

それは動作しません、空のテーブルを返します。ありがとう。 – Danvrais

答えて

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 

ここでの考え方は、あなたが​​がテーブルrepresentaで互いにassocited表示したい場合は、あなたがテーブルrepresenta 2回表PAISに参加する必要があります。​​の場合は1回、cod_pais1の場合は​​の場合はcod_pais2に関連付けられます。

結果:

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

DEMO

+0

本当にありがとう、私はそれを逆転させていました.2回の表現と1回のペースを使っていました。私の教授XDよりはるかに優れていました。 – Danvrais

+0

@Danvrais:親切に[回答を受け入れる](https://stackoverflow.com/help/someone-answers)を読んでください:-) – zarruq

関連する問題