2017-03-03 7 views
0

いくつかの条件によってアイテムの収益を計算するために4つの異なるテーブルに参加しようとしていますが、4つのテーブルを使用して正しいビューを構築できたらSQLクエリを作成します。ビューのクエリとikのあいまいな列エラーが発生しています...誰かがなぜその理由を説明できますか? ご協力いただきありがとうございます!カラム参照があいまいですsqlエラー

select top 5 g.* 
from (
    select * 
    from (
     (
      select a.ik 
       ,b.upc as upc 
       ,b.class 
       ,a.units 
      from Tbl1 a 
      join TBL2 b 
       on a.ik = b.ik 
      ) c join Tbl3 d 
      on c.ik = d.ik 
     ) e 
    join Tbl4 f 
     on e.ik = f.ik 
    ) g 
+1

を置くべき 、*を選択し実行することができます。テーブルの中には、列名が重複しているものがあります。 –

+0

'e'を' Tbl4'に結びつけ、その結果に対して 'Select *'を実行すると2つの 'ik'値が与えられます。あなたが気にする値だけを取り戻すために 'Select * 'を変更してください。副作用 - 私はあなたの質問を単純化することができますが、あなたがやろうとしていることは少しも考えていません。 – Siyual

+0

代わりにCTEテーブルまたは一時テーブルを使用してみてください。私の意見では、トラブルシューティングをしてみんなが読むのが簡単です。 – NonProgrammer

答えて

0

このクエリはやっているものをフォローするのは難しいですが、あなたは、サブセレクトを使用しているので、(すなわちselect a.ik as 'aliased_ik')それは選択に含まれているクエリの各選択部分のikをエイリアシングしてみてください。

また、外側の選択クエリで.*を使用するのではなく、個々の列名をそれぞれ使用する必要があります。外側の選択クエリにikがある場合は、同様にエイリアスする必要があります。

2

あなたが参加していたとき、あなたはあなたが複数のテーブルを接続する `join`と` *を選択し `使用しているテーブルの別名

select top 5 g.* 
from (
    select * 
    from (c.*,b.* 
     (
      select a.ik 
       ,b.upc as upc 
       ,b.class 
       ,a.units 
      from Tbl1 a 
      join TBL2 b 
       on a.ik = b.ik 
      ) c join Tbl3 d 
      on c.ik = d.ik 
     ) e 
    join Tbl4 f 
     on e.ik = f.ik 
    ) g 
関連する問題