2017-08-23 17 views
1

同じテーブルの異なるIDで2つの行を結合したいと考えています。同じテーブルの異なるIDで2つの行を結合する

Fruit table: 
name: from_id: to_id: 
Apple Spain  Italy 

Country table: 
id:  packaging_type: packaging_quantity: 
Italy wood box   12 
Spain paper box   18 

そして、私はこのテーブルを取得したいと思います:

Spain paper box 18 Italy wood box 12 

そして、私はこのような何か試してみました:

SELECT a.packaging_type, a.packaging_quantity, b.packaging_type, b.packaging_quantity 
FROM fruit 
    inner join country a on a.country.id = fruit.from_id 
    inner join country b on b.country.id = fruit.to_id 
WHERE fruit.name = 'Apple'; 

をしかし、私はエラーだ:

ORA-00904: "A"."COUNTRY"."ID": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 2 Column: 12 

答えて

3

を012の郡のテーブルにエイリアスを設定しています。エイリアスaまたはsの後にテーブル名を繰り返す必要はありません。 a.county.idの代わりにa.idを使用してください。あなたが一貫するようにしたい場合は

SELECT a.packaging_type, a.packaging_quantity, b.packaging_type, b.packaging_quantity 
FROM fruit 
INNER JOIN country a ON a.id = fruit.from_id 
INNER JOIN country s ON b.id = fruit.to_id 
WHERE fruit.NAME = 'Apple'; 

また、あなたはfruitテーブルのエイリアスを使用することができます。

SELECT a.packaging_type, a.packaging_quantity, b.packaging_type, b.packaging_quantity 
FROM fruit f 
INNER JOIN country a ON a.id = f.from_id 
INNER JOIN country s ON b.id = f.to_id 
WHERE f.NAME = 'Apple'; 
0

あなただけa.country.ida.idを使用する必要はありません。

だから、あなたのクエリは次のようになります。

SELECT a.packaging_type, a.packaging_quantity, b.packaging_type, b.packaging_quantity 
FROM fruit 
    inner join country a on a.id = fruit.from_id 
    inner join country s on b.id = fruit.to_id 
WHERE fruit.name = 'Apple'; 
0

a.country.ida.id

b.country.idでなければなりませんb.id

する必要があります
関連する問題