0

MS Access で以下の SQL を実行してみました。

基本的TAB3には変換テーブルとして使用

SELECT *
FROM TAB1 T1 INNER JOIN TAB2 T2
ON T1.MemNo = T2.MemID
AND (T1.SID = (SELECT x.Col1 FROM TAB3 x WHERE x.Col2 =  T2.SVID))

しかし、それは私に構文エラーを与えます

考えられる問題は何ですか

更新しました:

TAB1

MemNo   SID

116537  S110
116537  D011
575788  D012
214438  S110
434675  D114
214438  D011
208368  D012
208368  S110

TAB2

MemID   SVID

116537  110
116537  11
214438  11
434675  114
214438  110
575788  12
208368  12
208368  110


TAB3

Col1    Col2

D011    11
S110    110
D114    114
D012    12

ありがとう

4

3 に答える 3

2

存在するもので試してください:

SELECT *
FROM TAB1 T1 INNER JOIN TAB2 T2
ON T1.MemNo = T2.MemID
WHERE EXISTS (SELECT * FROM TAB3 x WHERE x.Col2 =  T2.SVID AND x.Col1 = T1.SID)
于 2013-07-26T07:32:14.410 に答える
2

サブクエリをクエリの WHERE ステートメントに移動してみませんか?

SELECT *
FROM TAB1 T1 
INNER JOIN TAB2 T2 ON T1.MemNo = T2.MemID
WHERE EXISTS ( SELECT 1
               FROM TAB3 x 
               WHERE x.Col2 =  T2.SVID
               AND x.Col1 = T1.SID )

LEFT JOIN で次のことを試してください。

SELECT *
FROM TAB1 T1 
LEFT JOIN TAB2 T2 ON T1.MemNo = T2.MemID
WHERE EXISTS ( SELECT 1
               FROM TAB3 x 
               WHERE x.Col2 =  COALESCE(T2.SVID, x.Col2)
               AND x.Col1 = T1.SID )
于 2013-07-26T07:35:16.837 に答える
0
SELECT *
FROM TAB1 T1 INNER JOIN TAB2 T2
ON T1.MemNo = T2.MemID
AND (T1.SID in (SELECT x.Col1 FROM TAB3 x WHERE x.Col2 =  T2.SVID))
于 2013-07-26T07:34:25.923 に答える