Access / SQL server 2008 Verbinden mit Wie funktioniert nicht

Ich entschuldige mich vor der time, weil diese Frage in verschiedenen forms viele Male auf dieser Seite ist, aber keiner der Lösungen, die ich ausprobiert habe, scheinen richtig zu funktionieren, und ich kann keine beantwortete Frage finden, die mir die richtige Antwort bringt.

Ich arbeite im Zugang für einen Mitarbeiter, obwohl es wahrscheinlich in SQL in der Zukunft sein wird, sobald er einen server aufstellen kann. Ich versuche, zwei Tische mit Like zu verbinden, was einfach genug ist, außer dass es einfach nicht richtig funktioniert. Zuerst ein Beispiel aus jeder Tabelle:

T1

+-------------------------+--------------------------------------------------------------+--------------+ |LOCATION_CG_LOC_LEGACY_ID|LOCATION_CODE_DESC |PI_LOW_SIDE_MW| +-------------------------+--------------------------------------------------------------+--------------+ |55555-Opt01 |Autobot Transformer, 800/900 NETWORK, Optimus #1 - 800 NETWORK|5 | +-------------------------+--------------------------------------------------------------+--------------+ |55555-Opt02 |Autobot Transformer, 800/900 NETWORK, Optimus #2 - 800 NETWORK|6 | +-------------------------+--------------------------------------------------------------+--------------+ |55555-Opt03 |Autobot Transformer, 800/900 NETWORK, Optimus #3 - 800 NETWORK|6.5 | +-------------------------+--------------------------------------------------------------+--------------+ 

T2

 +------+-----------------------------------------+------------+ |DIVID |DMT Bank Name |5 Digit Code| +------+-----------------------------------------+------------+ |647531|800/900 NETWORK, Optimus #1 - 800 NETWORK|55555 | +------+-----------------------------------------+------------+ |647532|800/900 NETWORK, Optimus #2 - 800 NETWORK|55555 | +------+-----------------------------------------+------------+ |647533|800/900 NETWORK, Optimus #3 - 800 NETWORK|55555 | +------+-----------------------------------------+------------+ 

Ich versuche, die Gegenstände im Wesentlichen zu kombinieren, damit ich alle Fragen ausführen kann, die ich will. Für jetzt aber, es geht mir gut mit einem auserwählten alle. Ich muss nur wie Gegenstände kombinieren. In T1 ist die erste Spalte [LOCATION_CG_LOC_LEGACY_ID] ein nicht wiederholendes, eindeutiges Element. In T2 ist [DIVID] ein nicht wiederholendes, einzigartiges Element. Ich habe versucht, sie zusammenzuholen

 SELECT * FROM [Data Table 1] INNER JOIN [Data Table 2] ON (([t1].[LOCATION_CODE_DESC] Like [t2].[DMT Bank Name] OR [t2].[DMT Bank Name] Like [t1].[LOCATION_CODE_DESC]) AND ([T1].[LOCATION_CG_LOC_LEGACY_ID] Like [t2].[5 Digit Code] or [t2].[5 Digit Code] Like [T1].[LOCATION_CG_LOC_LEGACY_ID])); 

Nun, ich denke, es gibt ein Problem mit der zweiten Hälfte dieser Join-Bedingung, aber auch nur die erste Hälfte, bekomme ich ZERO Ergebnisse. Allerdings, wenn ich die mittlere Spalte in jeder Tabelle zu bearbeiten, dann verwenden Sie die erste Hälfte dieser Bedingung, es funktioniert perfekt. Mit anderen Worten, wenn ich die Spalten genau übereinstimme, scheint die Abfrage zu funktionieren, was dem ganzen Punkt bei der Verwendung eines "ähnlichen" Beitrages entgeht, um damit zu beginnen.

Ich habe das noch nicht in SQL server ausprobiert, aber ich muss es in Access trotzdem als Beweis des Konzepts nutzen. Irgendjemand hilf dir wunderbare Damen und Herren können mir gern geschätzt werden, auch wenn es mich auf einen anderen Thread zeigt, den ich wie ein Dolch verpasst habe.

Schließlich versuche ich, VBA zu vermeiden, wenn möglich.

Sie müssen Wildcards wie % hinzufügen, wenn Sie LIKE in sqlserver verwenden, sonst wird es im Wesentlichen ein Check für Gleichheit ( = ). hier ist deine abfrage mit wildcards:

 SELECT * FROM t1 INNER JOIN t2 ON [t1].[LOCATION_CODE_DESC] Like '%' + [t2].[DMT Bank Name]+ '%' AND [T1].[LOCATION_CG_LOC_LEGACY_ID] Like '%' + CONVERT(varchar(50),[t2].[5 Digit Code] )+ '%'; 

Hier ist eine Geige: http://sqlfiddle.com/#!3/dc2b9/10/0

Du musst auch in int zu einem varchar irgendwelcher Art um Kompatibilität umwandeln.

Beachten Sie jedoch, dass ein join auf einem ähnlichen, vor allem mit einem Conversion wird in sehr schlechte performance für große datasätze führen.

Bearbeiten: MS Access

MS Access wird anders sein, wenn man int in string umwandelt und verschiedene Wildcards verwendet. Ich habe keinen Zugriff installiert, also kann ich nicht testing, aber ich denke deine MS Access-Abfrage würde so aussehen:

 SELECT * FROM t1 INNER JOIN t2 ON [t1].[LOCATION_CODE_DESC] Like '*' & [t2].[DMT Bank Name] & '*' AND [T1].[LOCATION_CG_LOC_LEGACY_ID] Like '*' & CStr( [t2].[5 Digit Code] ) & '*'; 

Versuche es und sehe genau so aus

 --MS SQL SELECT * FROM T1 Inner Join T2 on T1.[LOCATION_CG_LOC_LEGACY_ID] Like T2.[5 Digit Code] + '%' --MS ACCESS SELECT * FROM T1 Inner Join T2 on T1.[LOCATION_CG_LOC_LEGACY_ID] Like T2.[5 Digit Code] & '%'