SQL-Unterabfrage mit IN

11/03/2009 - 22:16 von Thomas Hoffmann | Report spam
Tag,
ich möchte alle Datensàtze der Tabelle 'Abrechnung', deren 'codeorig' dem 'ik' der Tabelle
'kasse' entsprechen, die die LIKE-Klausel erfüllen.

Die Abfrage
(SELECT ik FROM Kassen WHERE kasse LIKE '*" & kassenGruppe & "*')
liefert korrekte Datensàtze zurück, aber die untenstehende Abfrage keinen einzigen, obwohl
es solche Datensàtze gibt:

"SELECT * FROM Abrechnung WHERE codeorig IN " _
& "(SELECT ik FROM Kassen WHERE kasse LIKE '*" & kassenGruppe & "*')"

Hat das was damit zu tun, dass ich hier unterschiedliche Tabellen abfrage?

Gruß und Dank!
Thomas Hoffmann
 

Lesen sie die antworten

#1 Ingo Moch
11/03/2009 - 23:15 | Warnen spam
Hallo Thomas,

"Thomas Hoffmann" schrieb:

Die Abfrage (SELECT ik FROM Kassen WHERE kasse
LIKE '*" & kassenGruppe & "*') liefert korrekte
Datensàtze zurück, aber die untenstehende
Abfrage keinen einzigen, obwohl es solche
Datensàtze gibt:

"SELECT * FROM Abrechnung WHERE codeorig IN " _
& "(SELECT ik FROM Kassen WHERE kasse
LIKE '*" & kassenGruppe & "*')"



Kann es sein, dass da die Klein-/Grossschreibung
unterschiedlich ist oder ggf. bei einem Leerzeichen
vorkommen und beim anderen nicht (wobei sich
"SELECT ik FROM Kassen" nach Krankenkassen anhoert
und es sich somit um eine Ziffernfolge handeln
wuerde). Was passiert denn, wenn Du auf "NOT
codeorig IN ..." abfragst? Siehst Du dann (auch)
die Werte, die bei der Abfrage ohne NOT erwarten
wuerdest?

Ich frage mich aber, warum Du die Performancefalle
IN verwendest. Ein JOIN-Ausdruck wurde es doch auch
tun.

Hat das was damit zu tun, dass ich hier
unterschiedliche Tabellen abfrage?



Nein ... es ist Sinn und Zweck non IN und EXISTS
beliebige Tabelle abzufragen.

Tschau
Ingo

Ähnliche fragen