我有四个表叫做attr,data,extradata和syst。我必须做多个/嵌套的内连接来从所有4个表中获取一些属性,并因此而遇到问题。对于某些背景,有一个名为' ID'在'数据'我通过数据和extradata之间的内部联接获得的表格如下:
Select X.ID FROM data X
INNER JOIN extradata XA
ON X.dataID = XA.dataID
WHERE X.data = 'condition1' and NOT XA.additionaldata = 'condition2'
此ID必须与attr表中的ID匹配,并且还需要与syst表进行一次INNER连接。以下是我目前正在尝试的查询的缩写版本:
SELECT TOP(10) a.ID
FROM attr AS a
INNER JOIN data AS X ON a.ID =
(
Select X.ID FROM data X
INNER JOIN extradata XA
ON X.dataID = XA.dataID
WHERE X.data = 'condition1' and NOT XA.additionaldata = 'condition2'
)
INNER JOIN syst AS s ON a.sysID = s.sysID
WHERE s.desc = 'condition3'
我的查询有一些(显然)错误,所以我很感激任何建议。提前谢谢!
答案 0 :(得分:1)
假设attr.ID
映射到data.ID
,您可以简单地将所有表连接在一起,所有条件都放在WHERE
子句中:
SELECT TOP(10) a.ID
FROM attr AS a
INNER JOIN data AS X ON a.ID = x.ID
INNER JOIN extradata XA ON X.dataID = XA.dataID
INNER JOIN syst AS s ON a.sysID = s.sysID
WHERE X.data = 'condition1'
and NOT XA.additionaldata = 'condition2'
and s.desc = 'condition3'
加入attr
到data
,您也可以attr
加入extradata
,因为data
成为所有3个之间的链接。