0

結合ステートメントを使用してクエリを作成しようとしています。これは私が持っているものです:

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)

Customer テーブルに Person.Id に一致する行があり、その特定の行に RoleType="XX" および LocType=3 のフィールドがある場合でも、結果はありません。

更新:修正しましたが、今は問題があります..私はこれをしました:

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' 
4

2 に答える 2

1

秒のINNER JOINを aに置き換えて、テーブルで実際に検出されているものを確認し、それが期待どおりかどうかを確認します。LEFT OUTER JOINSELECTCustomer

データ型を確認します。たとえば、RoleTypeCHARは ? ではなくフィールド (パディングあり)VARCHARですか?

于 2012-07-18T08:07:34.170 に答える
0

customeridをpersonidに参加させる必要がありますか?または、customerテーブルにpersonid列がありますか?それらは一致しない可能性があります...これらのテーブルの1つに外部キーが含まれている可能性があります。何かのようなもの:

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
于 2012-07-18T08:12:55.333 に答える