2011-01-06 14 views
0

ich habe zwei Tabellen Benutzer & PersonSQL LIKE nicht richtig Erzielen von Ergebnissen

Benutzer - Benutzername, Vorname, Nachname, PersonId

Person - personID, Name1, Name2

ForExample: Vorname: Tom Nachname: Jerry Name1: TomTom

Sehen Sie in dem fähigen Beispiel dort wird der letzte Name nirgends wo in gefunden Name1 Spalte.

Ich muss alle Datensätze in der Datenbank hochziehen, in denen der Name der Benutzertabelle nicht in der Spalte Name1 der Personentabelle angezeigt wird.

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+'%' 

Aber das gibt mir nicht die richtige Reihe von Datensätzen zurück.

+1

Können Sie uns ein Beispiel für einen Datensatz geben, von dem Sie sagen, dass er falsch ist? – Lamak

+0

Wenn du dir das Beispiel ansiehst stellte ich grundsätzlich ein Ich suche nach Name1 um TomJerry zu sein nicht TomTom – Pinu

+0

hast du gerade deine Felder umgekehrt? Es klingt, als ob Sie nach Person suchen. Name1 NICHT LIKE '%' + Users.LastName + '%' – Andrew

Antwort

0

Ich glaube, Ihre Logik am Ende falsch ist.

Sie möchten alle "alle Datensätze in der Datenbank finden, in denen der Nachname der Benutzertabelle nicht in der Spalte name1 der Personentabelle angezeigt wird."

Ihre Logik, wie es derzeit steht, ist "wo der Nachname nicht wie Name1 ist."

Was Sie wollen, ist "wo Name1 nicht Nachnamen enthält."

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

Was gibt es zurück?

Versuchen Sie, Trim() für die Zeichenfolge, die Sie suchen, verwenden, gibt es Whitespace, die verursacht, dass es keine Übereinstimmung findet?

0

ich denke, das sollte funktionieren:

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

Er benötigt, dass der Nachname nicht in dem Namen enthalten sein wird, Ihre Abfrage findet genaue Übereinstimmungen. – Lamak

+0

@Lamak: OP << "Ich muss alle Datensätze in der Datenbank hochziehen, in denen der Nachname der Benutzertabelle nicht in der Spalte Name1 der Personentabelle angezeigt wird." >> - Was fehlt mir? – VoodooChild

0

versuchen, etwas wie diese ....

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+'%'