2012-05-05 7 views
0

ネストされたクエリがある場合、参照の範囲を把握することができませんでした。たとえば、私の内部結合でNoCarsFound.CUを参照できないようです。なぜ私の参加で以前の結果セットを参照することができないのか理解できません...私は、私の内的結合のON比較において、以前の選択結果を参照するか、エイリアスを参照するという範囲を明確にしていないと思います。結合のためにselect内の項目を参照できません

私はまた、あいまいな列名「CU」

を取得するので、私はそれがNoCarsFound.CUを知らないと言ってエラーを得続けます。私はvwInvalidCars.CUのような真っ直ぐなビューを参照しようとしましたが、vwInvalidCarsも理解できませんでした。

create procedure [Rac].[GetCarStatDetails_sp] 
    @Year int, 
    @CarTitle varchar(30), 
    @Company varchar(31), 
    @CU varchar(12), 
    @UserName varchar(50) 
as 
BEGIN 

DECLARE @CarMatch table 
(
    FaceValueTol varchar(100), 
    FaceValueDesc varchar(100), 
    Year int, 
    CU varchar(16), 
    PaintTypeDesc varchar(50) 

) 

insert into @CarMatch 
    Select temp1.FaceValueTol, 
      temp1.FaceValueDesc,  
      temp1.Year, 
      temp1.CU, 
      temp1.PaintTypeDesc 
    from Rac.viewCarBase as temp1 
    join (select Username, userCars.CU from Nep.viewUserCars userCars where UserName = @UserName) as userCars on userCars.CU = temp1.CU 
    INNER JOIN 
    (
     Select CU, 
       from Rac.vwCarFactor carfactors 
     where RiskFactorTypeID not in (334,553,34334,534,7756) 
     Group by CU 
    ) as temp 
    on 
     and temp1.CU = temp.CU 
     and temp1.PaintTypeDesc = temp.CalcPaintTypeDesc 
    Where 
     temp1.RiskFactorTypeID=4 
     and temp1.[Year][email protected] 
     and ([email protected] or @CarTitle='<All>') 
     and ([email protected] or @CU='<All>') 

SELECT ProductID_bo, 
     Coalesce(CarTitle_bo,LTRIM(RTRIM(CarTitle))) as CarTitle, 
     Coalesce(Company_bo,LTRIM(RTRIM(Company))) as Company, 
     Coalesce(CU_bo,LTRIM(RTRIM(CU))) as CU 
    FROM 
     Rac.viewCarBase as NoCarsFound 
     join (select Username, userCars.CU from Nep.viewUserCars userCars where UserName = @UserName) as userCars on userCars.CU = NoCarsFound.CU 
    LEFT OUTER JOIN 
    (
     Select ProductID_bo, 
       CarTitle_bo, 
       Company_bo, 
       CU_bo, 
     from (
       SELECT ProductID as ProductID_bo, 
         LTRIM(RTRIM(CarTitle)) as CarTitle_bo, 
         LTRIM(RTRIM(Company)) as Company_bo, 
       FROM Rac.viewCarBase 
       join (select Username, userCars.CU from Nep.viewUserCars userCars where UserName = @UserName) as userCars on userCars.CU = Rac.viewCarBase.CU 
       where ProductID in (Select ProductID from @CarMatch) and 
         and ([email protected] or @CarTitle='<All>') 
         and ([email protected] or @Company='<All>') 
         and ([email protected] or @CU='<All>') 

      ) AS SUB1 

     Group By  
        CarTitle_bo, 
        Company_bo, 
        CU_bo, 
     ON 
       NoCarsFound.CU = CarsFoundDeals.CU_bo 
    where 
     and ([email protected] or @CarTitle='<All>') 
     and ([email protected] or @Company='<All>') 
     and ([email protected] or @CU='<All>') 

end 

答えて

2

私はあなたが上記の持っているものから、SQLの2次の作品を見てみます:

LEFT OUTER JOIN 
(
    Select ProductID_bo, 
      CarTitle_bo, 
      Company_bo, 
      CU_bo, 
    from (
      SELECT ProductID as ProductID_bo, 
        LTRIM(RTRIM(CarTitle)) as CarTitle_bo, 
        LTRIM(RTRIM(Company)) as Company_bo, 
      FROM Rac.viewCarBase 
      join (select Username, userCars.CU from Nep.viewUserCars userCars where UserName = @UserName) as userCars on userCars.CU = Rac.viewCarBase.CU 
      where ProductID in (Select ProductID from @CarMatch) and 
        and ([email protected] or @CarTitle='<All>') 
        and ([email protected] or @Company='<All>') 
        and ([email protected] or @CU='<All>') --<--HERE!!!!!!!!!!!!!!!!!!!!!!!! 

     ) AS SUB1 

where 
    and ([email protected] or @CarTitle='<All>') 
    and ([email protected] or @Company='<All>') 
    and ([email protected] or @CU='<All>') -- <--HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

これらの両方が邪魔にCUを参照することが表示されます潜在的にあなたが報告しているエラーを引き起こす可能性があります。

+0

どうしてですか?なぜCU = @ CUのあいまいなエラーが出るのですか? – PositiveGuy

+1

参照している 'CU'列のテーブルを指定する必要があります。たとえば、 'Rac.viewCarBase'に' CU'カラムがあれば、 'Rac.viewCarBase.CU'に変更します。 –

+0

そうです。他の部分は私がBUを参照しているので、エイリアスやオブジェクトを介して参照していますが、ここでは単純なBUなので、BUはどこから来るのか分かりません。 。 – PositiveGuy

関連する問題