PDA

Vollständige Version anzeigen : Inkonsistenzen mit LIKE herausfiltern


StephenNL
01.06.2012, 18:28
Hallo,

Ich habe eine Query tmp1 und eine feste Tabelle tmp2.

[TMP1]
Firma Straße PLZ Ort Land
--------
A
Baecker
C
...



[TMP2]
Firma
--------
Bac
C
...

Das Resultset sollte wie folgt aussehen:

[RESULTSET]
Firma Straße PLZ Ort Land
-----
A

Ich möchte alle Einträge aus TMP1 im Ergebnis haben, die NICHT WIE TMP2 sind.

Mein Ansatz ist wie folgt:

SELECT DISTINCT tmp1.Firma, tmp1.Straße, tmp1.PLZ, tmp1.Ort, tmp1.Land
FROM tmp1, tmp2
WHERE UCase([tmp1].[Firma]) Not Like ("*" + UCase([tmp2].[Firma]) + "*");

Leider sieht das Ergebnis nicht so schön aus. Es werden immer ALLE Tupel aus tmp1 zurückgegeben, was mich so nicht weiterbringt.
Hat jemand eine Idee ?
Vielen Dank im Voraus.

Stephan

StephenNL
01.06.2012, 20:46
Anmerkung:

[TMP2]
Firma
--------
Bae
C

Thomas Möller
02.06.2012, 09:55
Hallo!

Ich möchte alle Einträge aus TMP1 im Ergebnis haben, die NICHT WIE TMP2 sind.

Eine Lösung sollte über eine Unterabfrage möglich sein:

SELECT Tmp1.Firma
FROM Tmp1
WHERE (
Tmp1.Firma NOT IN
(SELECT Tmp1.Firma
FROM Tmp1,
Tmp2
WHERE (
Tmp1.Firma LIKE [Tmp2].[Firma] & "*"
);
)
)

Diese Abfrage liefert für die angegebenen Testdaten das gesuchte Ergebnis.

HTH

StephenNL
04.06.2012, 10:29
Hallo Thomas !

Leider ist das Ergebnis (bei mir) immer noch dasselbe.
Es werden nachwievor ALLE Datensätze ungefiltert im Resultset zurückgegeben.


SELECT Tmp1.Firma
FROM Tmp1
WHERE (
Tmp1.Firma NOT IN
(SELECT Tmp1.Firma
FROM Tmp1,
Tmp2
WHERE (
Tmp1.Firma LIKE ("*" & [Tmp2].[Firma] & "*")
)
)
)