嵌套的内部联接与select sql访问

时间:2014-06-27 15:33:50

标签: sql ms-access select inner-join

我有两个类似的问题,我认为this与我需要的相似,但我无法弄清楚在我的案例中会是什么样子

1 我有三个表格,其中字段dIDfdddm连接到d

`fd`: `fID`, `dID` (`fID` and `dID` create the pk together)
`d`: `dID` (pk), `data`
`dm`: `dID`, `type` (`dID` and `type` create the pk together)

我正在寻找一种方法来查找d中符合fID = 'condition1type = 'condition2'

的所有记录

现在我已经通过以下方式解决了它(它有效,但它非常难看,所以我希望有一个更好的解决方案)

Q1: SELECT dID FROM fd WHERE fID = 'condition1'
Q2: SELECT dID FROM dm WHERE type = 'condition2'

SELECT * FROM d WHERE d.dID IN
(SELECT Q1.dID FROM Q1 INNER JOIN Q2 ON Q1.dID = Q2.dID)

2 现在我又有三张桌子了。 mIDtmm连接,typeIDm连接到types

<br>
`tm`: `tmID`, `mID` (pk together)
`m`: `mID` (pk), `mnum`, `typeID`
`types`: `typeID` (pk), `type`

所以我在这里寻找一种从type中选择types和从mnum m选择tmID的方式mnum

以下内容不正确,因为我希望能够同时选择typeSELECT types.type, m.mnum FROM ....,例如:Q1: SELECT mID FROM tm WHERE tmID = 'condition3' Q2: SELECT mnum, typeID FROM m WHERE m.mID IN Q1 Q3: SELECT type FROM types WHERE typeID IN Q2 。但基本上我想做这些选择

{{1}}

1 个答案:

答案 0 :(得分:0)

对于您的第一个查询,您只需将条件合并到一个查询中:

SELECT dID FROM fd WHERE fID = 'condition1' AND type='condition2'

对于第二个查询,您可以将所有三个表连接在一起并应用条件:

SELECT types.type
FROM tm INNER JOIN (m INNER JOIN types ON m.typeID = types.typeID) ON tm.mID = m.mID
WHERE tm.tmID='condition3';