0

相互に内部結合したい2つのルックアップテーブルがありますが、データテーブルに残して結合したいだけです。

select * from CLIENT
LEFT JOIN [ENTRY] 
    on [ENTRY].ENTRY_CODE = CLIENT.CLIENT_COUNTY
   and [ENTRY].ENTRY_RECD = 'A'
INNER JOIN [ENTRY_TYPES]
     on [ENTRY_TYPES].ENTRY_TYPES_FileRecordID = [ENTRY].ENTRY_TYPE
    and [ENTRY_TYPES].ENTRY_TYPES_CODE = 'COUNTY' 
    and [ENTRY_TYPES].ENTRY_TYPES_RECD = 'A'
  where CLIENT_RECD = 'A'

したがって、ENTRY_TYPES_FileRecordID = ENTRY_TYPE失敗した場合は、そのENTRYレコードをへの結合の左結合アイテムとして使用できないようにしCLIENTます。

上記のコードの左結合の記述方法はENTRY、内部結合のように動作します。

4

2 に答える 2

0

質問を入力しているときに自分で理解したので、サブクエリとして内部結合を分離する必要がありました

select * from CLIENT
left join 
(
    select ENTRY_CODE, ENTRY_NAME 
    from [ENTRY]
    inner join [ENTRY_TYPES] on ENTRY_TYPES_FileRecordID = ENTRY_TABLE
                            and ENTRY_TYPES_CODE = 'COUNTY' 
                            and ENTRY_TYPES_RECD = 'A'
    where ENTRY_RECD = 'A'
) as CountyLookup on CLIENT_COUNTY = ENTRY_CODE
where CLIENT_RECD = 'A'
于 2013-02-14T18:56:58.730 に答える
0

あなたはすでに自分で解決策を見つけましたが、今はそれをサブクエリにしました。これを行うには、元のクエリの一部を移動し、2つの角かっこを追加します。

したがって、これは代替案を示すためだけのものです。

SELECT * 
FROM [CLIENT]
LEFT JOIN ([ENTRY] --opening bracket
        INNER JOIN [ENTRY_TYPES]
            ON [ENTRY_TYPES].[ENTRY_TYPES_FileRecordID] = [ENTRY].[ENTRY_TYPE]
                AND [ENTRY_TYPES].[ENTRY_TYPES_CODE] = 'COUNTY' 
                AND [ENTRY_TYPES].[ENTRY_TYPES_RECD] = 'A') -- closing bracket
    ON [ENTRY].[ENTRY_CODE] = [CLIENT].[CLIENT_COUNTY]
        AND [ENTRY].[ENTRY_RECD] = 'A'
WHERE [CLIENT_RECD] = 'A'
于 2013-02-14T19:16:45.953 に答える