In MS Access. Ich habe zwei Tische. Ich versuche, alle Datensätze aus der Tabelle 1 zu finden, die keine Übereinstimmung in der Tabelle haben 2.So finden Sie nicht übereinstimmende Datensätze mit mehreren Match-Optionen
Table 1
DP FY BS RM EX
--------------------------------
21 1 0107 0 3000
20 R 0201 6 3960
12 3 0165 A 1111
Table 2
DP FY BS RD LI
-------------------------------
11 4 0300 0 **11
21 5 0107 7 8**W
97 7 0819 0 2***
21 4 0107 7 2011
Ich brauche Table1.DP + Table1.FY + Table1.BS + Table1.RM + Table1.EX verketten und finden Sie alle Datensätze in Tabelle1, in denen NO MATCH in Tabelle 2 in den Spalten Table2.DP + Table2.FY + Table2.BS + Table2.RD + Table2.LI vorhanden ist.
Ich brauche auch keine Übereinstimmung auf ein paar Teilstrings von table2.LI, wo sie Sterne enthalten werden (keine Wildcards, tatsächliche Sternchen).
der linken Seite 2 Zeichen von Table2.LI könnte Sternchen, wobei in diesem Fall möchte ich sein, diese Zeile in meinem Ergebnis zurückzukehren,
Die mittleren 2 Zeichen von Table2.LI Sternchen sein könnte, wobei in diesem Fall möchte ich um diese Zeile im Ergebnis zurückzugeben.
Die letzten 3 Zeichen von Table2.LI könnten Sternchen sein, in diesem Fall möchte ich diese Zeile in meinem Ergebnis zurückgeben.
Also, wenn wir die fünf Schlüsselfelder in einem 12-Zeichen-Textfeld mit dem Namen Key verketten waren, möchte ich eine Abfrage, die alle Ergebnisse aus Tabelle 1, wo
Table1.Key <> Table2.Key
Left(Table1.Key,8) + "**" + Right(Table1.Key,2) <> Table2.Key
Left(Table1.Key,9) + "**" + Right(Table1.Key,1) <> Table2.Key
Left(Table1.Key,9) + "***" <> Table2.Key
Grundsätzlich in diesen Fällen zurück, wo es sind Sterne in diesen Substrings von Table2.LI, ist mir egal, was in Table1.EX in diesen Positionen ist.
Wie kann ich eine SQL-Anweisung schreiben, um mir die Ergebnisse einer UNMATCHED-Abfrage zu geben, wo ich nur Ergebnisse von Tabelle 1 erhalte, wo es keine Übereinstimmung unter diesen Bedingungen in Tabelle 2 gibt? Kann ich die Abfrage schreiben, um die Sternchen im Feld als Platzhalter zum Vergleich zu sehen?
Update: Ich war in der Lage, das Problem zu lösen, indem Sternchen nach dem Erstellen des Schlüsselfelds im Schlüsselfeld durch Fragezeichen ersetzt wurden. Dann machen Sie einen linken Join mit "like" auf der Join-Klausel statt gleich. Jetzt habe ich ein neu entdecktes Problem. Es gibt zwei Bedingungen, bei denen Sternchen im LI-Feld sind, aber ich möchte nicht, dass sie in Fragezeichen umgewandelt werden, weil ich nicht möchte, dass sie als Platzhalter angezeigt werden.
Dies sind die Bedingungen, die ich ändern möchte. Table2.LI =
**XX
X**X
X***
Dies sind die Bedingungen, die ich will nicht in Platzhalter gedreht werden: Table2.LI =
****
X*XX
(wobei X eine beliebige Zahl oder einen Buchstaben ist).
Ich war in der Lage, die erste aufzulösen, indem Sie einfach eine Where-Klausel hinzufügen, die besagt, wo Table2.LI NICHT ENTHÄLT ("****"). Jetzt versuche ich nur die letzte Bedingung zu lösen. Ich muss das LI-Feld für ein Sternchen nur an der zweiten Position überprüfen und diesen Fall ignorieren.
Was haben Sie versucht? – blueCat
Ich habe einen Weg gefunden, die Sternchen in table2.LI durch Fragezeichen zu ersetzen.Dann sieht Access die Fragezeichen als Wildcards und ich mache einen linken Join am Schlüssel LIKE Schlüssel (anstatt =). wo table2.key ist null. – Nina
Ich werde ein Update hinzufügen. – Nina