2016-05-25 83 views
-1

好一天 我有以下查詢子選擇內喬恩 「從TB1噸內部聯接(選擇A,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是一個日誌表人員的位置,然後我需要的人員的位置詮釋日期範圍

但是當運行出現以下錯誤

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

好吧,我很抱歉tnk – eezzekl

0

刪除子查詢和移動狀態下的on條款:

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 ; 

您有其他錯誤以及,缺少tbl1.n之間的逗號和t2.a,因爲列別名中不允許(未轉義)。此外,where條款是多餘的;我猜你是在代碼中構造查詢。

+0

我發佈真正的查詢 – eezzekl

相關問題