嵌套内部联接查询

用户名

我有四个表,分别称为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'

加入attrdata让你也加入attrextradata,因为data成为所有3之间的联系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章