我有四个表,分别称为attr,data,extradata和syst。我必须进行多个/嵌套的内部联接才能从所有4个表中获取一些属性,并因此而遇到问题。在某些背景下,“数据”表中有一列称为“ 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'
该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'
我的查询有问题(很明显),因此,我很感谢任何建议。提前致谢!
假设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之间的联系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句