2016-04-08 8 views
0

以下に示すように、3つのテーブルA、B、Cがあります。行数を含む3つのテーブルの内部結合

A B C

すべての3つのテーブルは、共通CUST_ID列を持っています。テーブルAとBは2つの共通の列CUST_IDA_IDを持っています。私は、テーブルAから各CUST_IDSTARTEND用のテーブルBから、テーブルCからTest_IDのカウントをNAMEを表示することがあります。予想される結果表は、私は

select C.Name ,A.Start,A.[End] 
from 
C 
inner join 
B 
on C.CUST_ID = B.CUST_ID 
inner join 
A 
on A.A_ID = B.A_ID and A.CUST_ID = B.CUST_ID 

が、その合計が7行を与えるようinner joinを試み、等

R

あります。東のCUST_IDのためにTest_IDのカウントを表示し、期待される結果テーブルに示されているようにそれをわずか4つの行に表示する方法はありますか?

答えて

3

この

SELECT C.NAME, Tmp.Test_COUNT, A.START, A.END 
    FROM C INNER JOIN A ON C.CUST_ID = A.CUST_ID 
    INNER JOIN 
    (
     SELECT CUST_ID, A_ID, COUNT(*) AS Test_COUNT 
     FROM B 
     GROUP BY CUST_ID, A_ID 
    ) Tmp ON Tmp.CUST_ID = A.CUST_ID AND Tmp.A_ID = A.A_ID  
をお試しください
1

あなたがテーブルBにテストカウントを取得するためにサブクエリを使用して、代わりに直接Bを結ぶのこのテーブルに参加する必要があります。

SELECT C.NAME, t.Test_COUNT, A.START, A.END 
FROM C 
INNER JOIN A 
    ON C.CUST_ID = A.CUST_ID 
INNER JOIN 
(
    SELECT A_ID, COUNT(*) AS Test_COUNT 
    FROM B 
    GROUP BY A_ID 
) t 
    ON t.A_ID = A.A_ID 
関連する問題