【问题标题】:Nested inner joins with select sql access具有选择 sql 访问权限的嵌套内连接
【发布时间】:2014-08-18 18:54:25
【问题描述】:

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

1. 我有三个表,其中字段dIDfd 连接到ddmd

`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. 现在我又多了三张桌子。 mIDtm 连接到mtypeIDm 连接到types

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

因此,当我对tmID 有条件时,我正在寻找一种从types 中选择type 和从m 中选择mnum 的方法

以下内容不正确,因为我希望能够同时选择mnumtype,例如:SELECT 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

【问题讨论】:

    标签: sql ms-access select inner-join


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多