2017-11-05 18 views
0

私はかなり新しいSQLです。私は2つのテーブルの間に内部結合を作成し、適切なデータを引き出すためにwhere句をいくつか作成しました。私はそれを理解しているので、2つのテーブルを接続するために内部結合を使用しました。私が今行っているのは、結果の選択クエリを別のテーブルに接続することです。どうすればいい?内部結合選択ステートメントの使用

SELECT 
t.[Type] 



from [MITS].[dbo].[monster] t 

inner join (

SELECT [MITS].[dbo].[BROKERTABLE].[BrokerID] 
     ,[MITS].[dbo].[CustomerRates].[MPAN_ID] 
     ,[MITS].[dbo].[BROKERTABLE].[Commission_Rate] 
     ,[MITS].[dbo].[BROKERTABLE].[Rate_From] 
     ,[MITS].[dbo].[BROKERTABLE].[Rate_To] 
     ,[MITS].[dbo].[CustomerRates].[From_Date] 
     ,[MITS].[dbo].[CustomerRates].[To_Date] 


    from [MITS].[dbo].[CustomerRates] 

    Inner Join [MITS].[dbo].[BROKERTABLE] 
    on [MITS].[dbo].[BROKERTABLE].[MPAN_ID] = 
    [MITS].[dbo].[CustomerRates].[MPAN_ID] 

    where 

    [MITS].[dbo].[CustomerRates].[To_Date] <= 
    [MITS].[dbo].[BROKERTABLE].[Rate_To] 

    and 
    convert(datetime,'01/11/2015',103) 
    between convert(datetime,[MITS].[dbo].[CustomerRates].[From_Date],103) 
    and convert(datetime,[MITS].[dbo].[CustomerRates].[To_Date],103) 

    ) d on t.MITID = d.MPAT_ID 
+1

既存のクエリをあなたの質問?と、余分なテーブルに参加するのに使用されるテーブルとその列の名前? * –

+0

「INNER」、「LEFT」、「RIGHT」、「FULL」、「CROSS」の結合があります。[詳細]視覚的なジョイントガイド](https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins) –

+0

多くのテーブルは、好き。内部結合とは、両方のテーブルから一致するものが見つかった場合にのみ、結果がレコードに返されることを意味します。 3番目のテーブルに別の内部結合を追加すると、この制約が別のテーブルに強制的に適用されます –

答えて

1

既存のクエリに余分なテーブルを追加します。テーブルに既存のクエリを追加1

select * 
from atable a 
inner join btable b on a.somecol = b.somecol 
inner join extra_table t on a.somecol = t.somecol and b.somecol = t.somecol2 

を推測する、方法1

select * 
from extra_table t 
inner join (
      your existing query here 
      ) d on t.somecol = d.somecol 

は、方法2

、テーブルに既存のクエリを追加します。
select * 
from (
      your existing query here 
    ) d 
inner join extra_table t on d.somecol = t.somecol 
+0

の詳細については、「[** Click The Tick **](https://ibb.co/ikqyO6)」という回答を受け入れるこんにちは、ありがとう、なぜ私は、*私はバインドすることはできませんというエラーが表示される列の名前を置き換える? – Ingram

+0

私の例2または3に従っている場合は、他のエイリアスを使用した場合、最上位レベルのselect句はすべての列に対して別名 'd.'のみを使用します。 –

+0

しかし、問題は、私がselect *を使用しているので、私が望む列だけでなく、余分なテーブルのすべての列を戻しているということです。 – Ingram

関連する問題