我有两个类似的问题,我认为this与我需要的相似,但我无法弄清楚在我的案例中会是什么样子
1
我有三个表格,其中字段dID
将fd
与d
和dm
连接到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 = '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)
2
现在我又有三张桌子了。 mID
将tm
与m
连接,typeID
将m
连接到types
:
<br>
`tm`: `tmID`, `mID` (pk together)
`m`: `mID` (pk), `mnum`, `typeID`
`types`: `typeID` (pk), `type`
所以我在这里寻找一种从type
中选择types
和从mnum
m
选择tmID
的方式mnum
以下内容不正确,因为我希望能够同时选择type
和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
。但基本上我想做这些选择
{{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';