2017-08-24 5 views
0

サブクエリからエイリアスを使用したいと思います。サブクエリからエイリアスを使用

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

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

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

with subquery as (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') 
SELECT a.packaging_quantity from subquery; 

をしかし、私はエラーを得た:

ORA-00904: "A"."PACKAGING_QUANTITY": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 7 Column: 14 
+0

のMySQL:

は、あなたは彼らのようなasを使用して個別の名前を与える必要があります。 –

+0

申し訳ありませんがsqlをクリックしたいのですが、その代わりにmysqlをクリックして削除するのを忘れました。 – tmsblgh

+1

を削除します。選択クエリから再実行します。--SELECT packaging_quantity from subquery; ---これが動作するかどうかを確認します。 – Nidhi257

答えて

3

これは質問の元のバージョンを答えます。

CTEには4つの列がありますが、列の別名はpackaging_typepackaging_quantityの2つです。表の別名は、完全修飾列名(つまり、別名または表名を含む)ではなく、列名そのものです。それは本当にあなたが使用しているデータベースの場合は、共通テーブル式をサポートしていません、

with subquery as (
     select a.packaging_type as packaging_type_a, 
      a.packaging_quantity as packaging_quantity_a, 
      b.packaging_type as packaging_type_b, 
      b.packaging_quantity as packaging_quantity_b 
     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' 
    ) 
select packaging_quantity_a 
from subquery; 
+0

私の質問が更新されましたので、それを確認してください。ありがとう! – tmsblgh

+0

@tmsblgh。 。 。あなたは*新しい*質問をする必要があります。答えが返ってから質問を変更するのは無礼です。なぜなら、元の回答の下落を促すことができるからです。 –

+0

それを知らなかった、申し訳ありません! – tmsblgh

関連する問題