2012-07-18 152 views
0

我想使用連接語句進行查詢。這是我有:SQL連接查詢不返回任何東西

SELECT Person.Id, 
     Person.AddressLine1, Person.AddressLine2, Person.Name, 
     Person.City 
    FROM Person WITH (NOLOCK) INNER JOIN 
     Customer ON 
     Customer.Id = Person.Id 
    WHERE (Person.IsRegular = 1) 

但是當我使用這個(我加WHERE子句中的另一個參數):

SELECT Person.Id, 
     Person.AddressLine1, Person.AddressLine2, Person.Name, 
     Person.City 
    FROM Person WITH (NOLOCK) INNER JOIN 
     Customer ON 
     Customer.Id = Person.Id 
    WHERE (Person.IsRegular = 1) AND 
     (Customer.RoleType = 'XX') AND 
     (Customer.LocType = 3) 

有沒有結果,即使我有一個排在我的客戶表匹配Person.Id並且該特定行具有RoleType =「XX」和LocType = 3的字段。

UPDATE: 固定的,但現在我有一個問題..我這樣做:

SELECT Person.Id, Person.AddressLine1, Person.AddressLine2, Person.Name, Person.City 
FROM Person WITH (NOLOCK) 
INNER JOIN Customer ON Customer.Id = Person.Id WHERE (Person.IsRegular = 1) AND (Customer.RoleType = 'XX') AND (Customer.LocType = 3) 
AS xxx ON xxx.Id=1... it says:incorrect syntax near the keyword 'AS' 
+1

是否與特定是PersonID的角色類型「XX」的人,LOCTYPE 3具有屬性IsRegular集到1? – SchmitzIT 2012-07-18 08:09:18

+3

是否有你使用'WITH(NOLOCK)'的原因? – 2012-07-18 08:10:19

+0

請發佈您的表格數據。 – SMK 2012-07-18 08:10:37

回答

1

更換INNER JOINLEFT OUTER JOIN在你的第二個SELECT看到的是居然在Customer被檢測什麼表,如果它是你所期望的。

檢查數據類型:例如,RoleType是一個CHAR字段(帶填充)而不是VARCHAR

+0

無論是或使用角色類型 – 2012-07-18 08:09:13

+0

上的'LIKE'%XX%'''修復它的男人,但現在我有一個問題..我這樣做: SELECT Person.Id, Person.AddressLine1,Person .AddressLine2,Person.Name, Person.City FROM WITH WITH(NOLOCK)INNER JOIN Customer ON Customer.Id = Person.Id WHERE(Person.Is (Customer.RoleType ='XX')和 (Customer.LocType = 3) AS xxx ON xxx.Id = 1 ... 它說:關鍵字'AS'附近的語法不正確 – 2012-07-18 08:33:20

+0

AS是一個別名關鍵字,用於1)SELECT中的列(例如, SELECT col1 as myCol1 ...)或2)用於派生表,但不符合WHERE子句中的術語。 – davek 2012-07-18 08:39:10

0

你是否應該將customerid加入personid?或者在客戶表中有人名專欄?這些可能不匹配... 其中一個表可能包含外鍵。 喜歡的東西:

SELECT Person.Id,   
Person.AddressLine1, 
Person.AddressLine2, Person.Name,   
Person.City 
FROM Person WITH (NOLOCK) INNER JOIN Customer ON 
Customer.Id = Person.CustomerId 
WHERE (Person.IsRegular = 1) 

根據你的表是如何佈局,這可能是

Customer.PersonId = Person.Id 
+0

客戶是人,所以這是可能的,與1-1的關係。 – 2012-07-18 08:15:40

+0

足夠真實 - 雖然基於給定的信息,但仍不能保證它們的主鍵匹配。 – jle 2012-07-18 08:21:25

+0

修復它的男人,但現在我有一個問題..我這樣做:選擇Person.Id,Person.AddressLine1,Person.AddressLine2,Person.Name,Person.City從人與(解鎖)內部加入客戶在客戶。 Id = Person.Id WHERE(Person.IsRegular = 1)和(Customer。(AS.OocType = 3)AS xxx xxx.Id = 1 ...它說:關鍵字'AS' – 2012-07-18 08:34:09