SQL无效的列名(我认为这是因为空值)
我有一个嵌套的SQL select语句,其中子select依赖于父select中的值。但是,我认为由于空值,查询失败。 如何让查询在每次遇到空值时忽略子select语句 我的问题是:SQL无效的列名(我认为这是因为空值),sql,sql-server-2008,select,Sql,Sql Server 2008,Select,我有一个嵌套的SQL select语句,其中子select依赖于父select中的值。但是,我认为由于空值,查询失败。 如何让查询在每次遇到空值时忽略子select语句 我的问题是: SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy, (SELECT ID FROM SpecProducts
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts
WHERE (Hierarchy = ParentHierarchy)) AS ParentHierarchy
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
以下是我的错误消息:
列名“ParentHierarchy”无效
********************编辑:24/04/2012-14:50*****************
谢谢你指出错误。不幸的是,我仍然遇到同样的问题
以下是更新后的查询:
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts
WHERE (Hierarchy = ParentHierarchy)) AS ParentID
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
错误消息:
列名“ParentHierarchy”无效
问题是否是因为ParentHierarchy值可以为NULL
**编辑************
好的,这是有效的:
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID AS IDd
FROM SpecProducts
WHERE (Hierarchy = SpecProducts_1.Hierarchy.GetAncestor(1))) AS ParentID
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
您有两个名为ParentHierarchy的字段。您需要将第二个字段更改为其他名称。此外,您正在尝试在嵌套的SELECT语句中引用别名。请尝试引用GetAncestor1方法。使用ParentHierarchy名称两次。试一试
SELECT ID, ..., Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts
WHERE (Hierarchy = ParentHierarchy)) AS ParentHierarchyID ...
这是因为您试图在主SELECT语句中为两个不同的列指定ParentHierarchy名称:
Hierarchy.GetAncestor(1) AS ParentHierarchy
及
是打字错误还是你将两列命名为ParentHierarchy?啊,是的,我有!谢谢你发现这个。非常感谢您的帮助此操作确实运行,但是我没有得到ParentHierarchy2值的正确结果。**请注意,ParentHierarchy2实际上应该称为ParentID。
(SELECT ID ...) AS ParentHierarchy
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts as sp2
WHERE (sp2.Hierarchy = SpecProducts_1.Hierarchy)) AS ParentHierarchy2
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy