コードのこの作業作品を検討してください:これはどこの部分では、クエリの一部である、と私はまた、DTも中に存在している、テーブルは、Ptことを言及すべきであることをSQLサブクエリの範囲
exists
(
select 1 from dt dt1 inner join pt pt1 on dt1.map=pt1.map and dt1.pda=pt1.pda where c.code=dt1.customer and dt1.canceled=0 and dt1.doccode in ('02','03') and pt1.exp_value<>0
and dt1.insdate>='20151001'
and pt1.item in (select item from f_itemset where itemset='campaign78' and cat_custom='complexion_sccf')
)
and not exists
(
select 1 from dt dt2 inner join pt pt2 on dt2.map=pt2.map and dt2.pda=pt2.pda where c.code=dt2.customer and dt2.canceled=0 and dt2.doccode in ('02','03') and pt2.exp_value<>0
and dt2.insdate>='20151001'
and pt2.item not in (select item from f_itemset where itemset='campaign78' and cat_custom='complexion_sccf')
)
注意をfrom句。問題は次のとおりです。これらのエイリアス(dt1、dt2など)はすべて必要ですか?これらのエイリアスを与えなければ、外側のクエリとdt/ptの相関関係になる恐れがあるので、私はあまりにもパラノイドになりますか?あなたがサブクエリは最初の1 ...
Normalyからのデータを使用して、SQL Serverはその場合は、警告されますことがわかります
SELECT * FROM TAGS AS T
WHERE T.[COUNT]< 10
AND T.ID IN (SELECT O.ID FROM TAGS AS O WHERE O.[COUNT]=9 OR O.ID = T.ID)
:完璧に動作します。この(愚かな)クエリで
これらの2つのサブクエリは互いに認識しません。 – jarlh
良いですが、エイリアスが存在しなかった場合はどうなりますか? –
いいえ、テーブルのエイリアスまたは違いはありません。 – jarlh