2016-05-25 3 views
-1

良い日 Iは、次のクエリを有し内側JONを選択し、サブ "TB1 tから内部ジョイン(選択B TB2ここで、b = tb1.item2から)T2.A = tb1.bにT2として"

SELECT 
    G.guid, G.guLastName1, G.guFirstName1, G.guShowD, 
    G.guPRInvit1 as guPR1, GP1.peN as guPR1N, pl.pppo as POST, 
    pl.pppe, pl.pppo 
FROM Guests G 
left join Personnel GP1 on GP1.peID = G.guPRInvit1 
LEFT JOIN (SELECT TOP 1 a.pppo, a.ppDT, a.pppe FROM PostsLog a where a.pppe = GP1.peID) as pl 
ON (pl.pppe = GP1.peID) --and DATEDIFF(DAY,pl.ppDT,G.guShowD)>=0) 
WHERE 
G.guShowD between @datefrom and @DateTo and G.gusr = @SalesRoom 

テーブルPostsLogはその後、私は日付の範囲

をint型が、私は次のエラーを取得する実行しているとき

The multi-part identifier "GP1.peID " could not be bound. 

は、誰かが私を伝えることができる人材の位置を必要とするテーブル要員の位置のログです私は間違っている。私は、SQLサーバーで非常に苦手とサブクエリを削除私のミス

+0

あなたはtb1.nとt2.aの間にカンマがありませんが、その理由ではなく、なぜ複雑なクエリを作成するのか、table1とtable2 –

+0

また、t2bがt2.b – scsimon

+0

の期間が必要で、タイトルを書き直す必要があります。 –

答えて

1

これはあなたの本当の問題のように見える:

               -------VV 
LEFT JOIN (SELECT TOP 1 a.pppo, a.ppDT, a.pppe FROM PostsLog a where pl.pppe = GP1.peID) as pl 

plエイリアスがサブクエリ自身のためであり、したがって、することができます。tがサブクエリ

を使用すること、私はあなたが

を意味疑います
               -------V 
LEFT JOIN (SELECT TOP 1 a.pppo, a.ppDT, a.pppe FROM PostsLog a where a.pppe = GP1.peID) as pl 
+0

を投稿しましたが、これは実際のクエリでここにクエリを書き込んだエラーです – eezzekl

+0

@EzequielezzeklCanulこれは二度とあなたが不適切に書き直されたクエリに基づいて回答を得たことです - 不可能です実際のクエリを投稿しない場合は、明確な回答を得ることができます。それ以外の場合は、人々の時間を無駄にしています。 –

+0

ok im sorry tnk – eezzekl

0

を見つけ、on句に条件を移動することはできません:tbl1.n間のカンマが欠落し、同様にあなたが別のエラーが発生しました

select tb1.a, tb1.b, tb1.n, t2.a, t2.b 
from table1 tb1 inner join 
    table2 t2 
    on t2.b = tb1.n and t2.c = tb1.b 
where 1 = 1 ; 

ピリオドは列エイリアスで許可されていない(エスケープされていない)ため、t2.aです。また、where句は余分です。私はあなたがコードでクエリを構築していると思います。

+0

私は実際のクエリ – eezzekl

関連する問題