0

ネストされたSQLselectステートメントがあり、subselectは親selectの値に依存しています。ただし、null値が原因でクエリは失敗します(私は思います)。null値に遭遇するたびにsubselectステートメントを無視するようにクエリを取得するにはどうすればよいですか?

これが私の質問です:

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'

** * ** * ** * ** * ** * ** * **編集:2012年4月24日-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
4

4 に答える 4

1

ParentHierarchy という名前の 2 つのフィールドがあります。2 番目のフィールドを別の名前に変更する必要があります。また、ネストされた SELECT ステートメント内でエイリアスを参照しようとしています。代わりに GetAncestor(1) メソッドを参照してみてください。

于 2012-04-24T12:04:39.460 に答える
1

ParentHierarchy名前を 2 回使用します。試す

SELECT ID, ..., Hierarchy.GetAncestor(1) AS ParentHierarchy,
    (SELECT ID
     FROM  SpecProducts
     WHERE (Hierarchy = ParentHierarchy)) AS ParentHierarchyID ...
于 2012-04-24T12:04:40.573 に答える
0

これは、メインステートメントParentHierarchyで 2 つの異なる列に名前を付けようとしているからです。SELECT

Hierarchy.GetAncestor(1) AS ParentHierarchy

(SELECT ID ...) AS ParentHierarchy
于 2012-04-24T12:05:36.080 に答える
0
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
于 2012-04-24T12:23:47.600 に答える