2011-01-06 11 views
0

を得ていない - ユーザー名を、ファーストネーム、姓、人SQL LIKE私は2人のテーブルのユーザー&人</p> <p><strong>ユーザー</strong>持っている右の結果に

をPERSONID - PERSONID、名1、Name2は

ForExample: FirstName:Tom LastName:Jerry Name1:TomTom

この例では、姓が見つかりませんでしたName1列。

ユーザーテーブルの姓が ではないデータベース内のすべてのレコードを、personテーブルのname1列に表示する必要があります。

SELECT Users.UserName,Users.FirstName,Users.LastName, 
     Users.PersonID,Person.Name1,Person.Name2 
FROM Users 
JOIN Person 
ON Users.PersonID = Person.PersonID 
WHERE Users.LastName NOT LIKE '%'+Person.Name1+'%' 

しかし、これは私に正しいレコードを返すわけではありません。

+1

あなたが言っているレコードの例を間違えてもいいですか? – Lamak

+0

私が基本的に提供している例を見れば、私はName1をTomTerryではなくTomTomと探しています – Pinu

+0

あなたはあなたのフィールドを逆転させましたか? Person.Name1 NOT LIKE '%' + Users.LastName + '%'を探しているように聞こえます。 – Andrew

答えて

0

私は最後にあなたのロジックが間違っていると信じています。

「すべてのレコードは、ユーザーテーブルの姓がpersonテーブルのname1列に表示されていないデータベースにあります。」

あなたの現在の論理は、「姓がname1のような場所ではありません」です。

「名前1には姓が含まれていません」としてください。

0

何を返すのですか?

検索している文字列にTrim()を使用してみてください。恐らく一致するものが見つからない空白がありますか?

0

私は、これは動作するはずだと思う:

SELECT * 
FROM USER u 
WHERE u.LastName NOT IN (SELECT p.Name1 from Person p) 
+0

名前に姓が含まれていないと、正確な一致が検索されます。 – Lamak

+0

@Lamak:OP << "personテーブルのname1カラムにユーザテーブルの姓が表示されないデータベースのすべてのレコードをプルアップする必要があります。" " - 何が欠けていますか? – VoodooChild

0

このような何かを試してみてください....

SELECT Users.UserName,Users.FirstName,Users.LastName,Users.PersonID,Person.Name1,Person.Name2 
FROM Users, Person 
WHERE Users.PersonID = Person.PersonID 
AND Users.LastName NOT LIKE '%'+Person.Name1+'%' 
関連する問題

 関連する問題