2017-05-29 23 views
1

左結合を使用して簡単なSQLクエリを作成しようとしています。SQL - 左結合のテーブルエイリアス

これはクエリです:

SELECT * 
FROM ( 
    SELECT * 
    FROM TRN_IN.COIT AS TRANSMISSIONS 
    LEFT JOIN ( 
     SELECT TRNNumber ,COUNT(ID) 
     FROM TRN_IN.COIT AS TOTAL_LINES 
     WHERE DataPiece02 = 'TO' 
     GROUP BY TRNNumber 
    ) ON TRANSMISSIONS.TRNNumber = TOTAL_LINES.TRNNumber 
) 

第二表の別名はTOTAL_LINESです。

実行時にTOTAL_LINESが表示されないというエラーが表示されます。

奇妙なことは、それ自体で2番目のクエリを実行しようとすると、エラーがないこと、である:

(SELECT TRNNumber ,COUNT(ID) 
FROM TRN_IN.COIT AS TOTAL_LINES 
WHERE DataPiece02 = 'TO' 
GROUP BY TRNNumber) 

誰もが手掛かりを持っていますか?

答えて

3

AS TOTAL_LINESテーブルエイリアス名を間違った場所に割り当てることを希望します。

2番目のサブクエリの後にテーブルエイリアス名を配置すると、問題が解決します。

あなたは以下のクエリを試すことができます:

SELECT * 
FROM (
    SELECT * 
    FROM TRN_IN.COIT AS TRANSMISSIONS 
    LEFT JOIN (
     SELECT TRNNumber 
      ,COUNT(ID) AS CountDetails 
     FROM TRN_IN.COIT 
     WHERE DataPiece02 = 'TO' 
     GROUP BY TRNNumber 
     ) AS TOTAL_LINES ON TRANSMISSIONS.TRNNumber = TOTAL_LINES.TRNNumber 
    ) AS Result 
1

TOTAL_LINESは、FROM句でないテーブルの上に、全体の選択の別名でなければなりません。変更するには:

SELECT * FROM (SELECT * FROM TRN_IN.COIT AS TRANSMISSIONS 

LEFT JOIN (SELECT TRNNumber ,COUNT(ID) FROM TRN_IN.COIT WHERE DataPiece02 = 'TO' GROUP BY TRNNumber) AS TOTAL_LINES 

ON TRANSMISSIONS.TRNNumber = TOTAL_LINES .TRNNumber) 
1

ことは、これを試してみてください。..

SELECT TOTAL_LINES.TRNNumber,COUNT(TOTAL_LINES.ID) FROM TRN_IN.COIT TRANSMISSIONS LEFT JOIN TRN_IN.COIT TOTAL_LINES 
ON TRANSMISSIONS.TRNNumber = TOTAL_LINES.TRNNumber 
WHERE TOTAL_LINES.DataPiece02 = 'TO' GROUP BY TOTAL_LINES.TRNNumber; 
+0

だけのコードを追加しないでください。説明を追加する – Jens