ms访问sql展开

时间:2016-10-23 12:17:40

标签: sql ms-access

对于我遇到的以下问题,我将不胜感激。 我有以下两个表(tblA和tblB):

tblA
+----+------+
| ID | item |
+----+------+
|  1 | c    |
|  2 | a    |
|  3 | b    |
|  4 | e    |
|  5 | d    |
|  6 | f    |
|  7 | a    |
|  8 | c    |
+----+------+

tblB
+----+----+
| f1 | f2 |
+----+----+
| a  |    |
| b  | a  |
| c  | a  |
| d  |    |
| e  |    |
| f  | d  |
| g  | d  |
| h  | d  |
| I  |    |
+----+----+

我想要实现的是:tblA的item字段中的值出现在tblB的f2字段中我想要选择所有tblB f1值以及来自tblA的ID值,这样我们就可以了得到以下结果:

+----+------+
| ID | item |
+----+------+
|  2 | b    |
|  2 | c    |
|  5 | f    |
|  5 | g    |
|  5 | h    |
|  7 | b    |
|  7 | c    |
+----+------+

请注意,来自tblA的ID值2和7虽然具有相同的项值('a'),但仍会在结果中单独出现;这是必需的。

我一直在玩以下想法:

SELECT f1 FROM tblB
WHERE f2 IN(SELECT item FROM tblA)

//

SELECT ID,f1 FROM tblA,tblB
WHERE f2 IN(SELECT item FROM tblA)

//

SELECT x.ID, y.f1
FROM tblA AS x, tblB AS y
WHERE y.f2 IN(SELECT item FROM tblA)

但我很难到达那里。

1 个答案:

答案 0 :(得分:2)

我认为这只是一个join

select a.id, b.f1 
from tblA as a inner join
     tblB as b
     on b.f2 = a.item
order by a.id;