使用select sql访问的嵌套内部联接

使用select sql访问的嵌套内部联接,sql,ms-access,select,inner-join,Sql,Ms Access,Select,Inner Join,我有两个相似的问题,我想这和我需要的是相似的,但我不知道在我的情况下会是什么样子 一,。 我有三个表,其中字段dID将fd连接到d,dm连接到d: 我正在寻找一种方法来查找d中满足fID='condition1和type='condition2'的所有记录 现在我已经用下面的方法解决了它,但它非常难看,所以我想要一个更好的解决方案 Q1: SELECT dID FROM fd WHERE fID = 'condition1' Q2: SELECT dID FROM dm WHERE type =

我有两个相似的问题,我想这和我需要的是相似的,但我不知道在我的情况下会是什么样子

一,。 我有三个表,其中字段dID将fd连接到d,dm连接到d:

我正在寻找一种方法来查找d中满足fID='condition1和type='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)
二,。 现在我又有三张桌子了。mID将tm连接到m,typeID将m连接到类型:


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

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';
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
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';