0
TABLE dbo_R5PERSONNEL
column PER_DESC
Do, John 
Jones, Jacky

TABLE dbo_R5USERS
column USR_DESC
John Do
Jack Jones

Q:これら2つのテーブルを結合して、テーブルdbo_R5PERSONNELの列PER_DESCに存在するテーブルdbo_R5USERSからすべてのUSR_DESCを取得するにはどうすればよいですか。

文字列操作を使用して、各テーブルから最後の名前だけを大文字にして抽出しました

SELECT UCASE(MID(TRIM(dbo_R5USERS.USR_DESC),  INSTR(TRIM(dbo_R5USERS.USR_DESC), ' ') + 1, LEN(TRIM(dbo_R5USERS.USR_DESC)) - INSTR(TRIM(dbo_R5USERS.USR_DESC), ' '))) AS LastName
FROM dbo_R5USERS
WHERE dbo_R5USERS.USR_ACTIVE = '+'
ORDER BY dbo_R5USERS.USR_DESC;


SELECT UCASE(MID(TRIM(dbo_R5PERSONNEL.PER_DESC),1,INSTR(TRIM(dbo_R5PERSONNEL.PER_DESC),',')-1)) AS LastName
FROM dbo_R5PERSONNEL
WHERE dbo_R5PERSONNEL.PER_NOTUSED='+'
ORDER BY dbo_R5PERSONNEL.PER_DESC;

これらの2つのサブクエリにJOINを組み込むにはどうすればよいですか?希望する結果を達成するための別の方法はありますか?

前もって感謝します!

アップデート1:

SELECT R.LastName
    , P.LastName FROM 
(
    SELECT UCASE(MID(TRIM(dbo_R5USERS.USR_DESC)
        , INSTR(TRIM(dbo_R5USERS.USR_DESC), ' ') + 1, LEN(TRIM(dbo_R5USERS.USR_DESC)) - INSTR(TRIM(dbo_R5USERS.USR_DESC), ' '))) AS LastName 
    FROM dbo_R5USERS 
    WHERE dbo_R5USERS.USR_ACTIVE = '+'
) R 
INNER JOIN 
( 
    SELECT UCASE(MID(TRIM(dbo_R5PERSONNEL.PER_DESC),1,INSTR(TRIM(dbo_R5PERSONNEL.PER_DESC),‌​',')-1)) AS LastName 
    FROM dbo_R5PERSONNEL 
    WHERE dbo_R5PERSONNEL.PER_NOTUSED='+'
) P 
    ON R.LastName = P.LastName
4

0 に答える 0