Hallo,
ich möchte gerne eine Abfrage erstellen. Diese basiert auf zwei Tabellen. Verknüpft sind die Tabellen über eine Art Kundennummer. Nun sollen nur die Datensätze ausgeworfen werden, bei denen in beiden Tabellen die gleichen Kundennamen nebeneinander stehen (aus der Datenblattansicht gesehen). OK, da stimmt was mit der Normalisierung nicht (Stichwort doppelte Daten), aber ich nutze eine vorgefertigte Datenbank und muss daher die vorhandene Tabellenstruktur nehmen.
Z.B.
KdNr Name Tab1 Name Tab2
1 Müller,Peter Müller,Pet
2 Meier,Erna Meier,Er
Ergänzender Hinweis:
Zu den jeweiligen Kundennummern gibt es in der zweiten Tabelle noch viele andere Namen, die weggefiltert werden sollen.
Kriege das im Prinzip schon hin, aber in der zweiten Tabelle sind manche Namen abgeschnitten. Daher möchte ich nur z.B. die ersten zehn Zeichen vergleichen. Bei dem eingegebenen Ausdruck kriege ich aber eine Fehlermeldung.
Like Links([SA40Z]![Name],10)*
Wie muss das Kriterium bitte richtig geschrieben werden?
Gruß
compinaut
Hallo,
wenn ich das recht verstanden habe, einfach eine Abfrage mit beiden Tabelle und der Beziehung (Inner Join) über die KdNr.
In die Abfrrage ist dann die KdNr, der Name aus Tab1 und der Name aus Tab2 aufzunehmen.
Hallo,
Zitat...Daher möchte ich nur z.B. die ersten zehn Zeichen vergleichen...
versuch mal in etwa so zu vergleichen:
SELECT Tab1.KDNR, Tab1.KName, Tab2.KName
FROM Tab1
INNER JOIN Tab2 ON Tab1.KDNR = Tab2.KDNR
WHERE Left([Tab2].[Kname],5)=Left([Tab1].[KName],5)
Vergleiche immer nur gleiche Textlängen der Namensfelder!
Dass dieser Stringvergleich die Performancebremse Nummer 1 ist brauch ich nicht extra erwähnen ...
Bei kürzeren Namen bist mit 10 Zeichen m.E. nicht mehr dabei ;)
p.s. Ich habe KName verwendet, da mich das reservierte Wort 'Name' als Spaltenbezeichnung erschaudern läßt :D ;D :o
Hallo,
habe das Beispiel übernommen und alles klappt wunderbar. Der Tipp mit den 5 Zeichen ist sehr gut.
Vielen Dank!
Gruß
compinaut