Entwickler-Ecke

Datenbanken - ADOQuery IN-Klausel


wersi77 - Fr 19.08.11 20:11
Titel: ADOQuery IN-Klausel
Hallo zusammen,

ich würde gerne eine Select Anweisung mit Parametern in der WHERE Klausel aufbauen, welche folgendermaßen aussieht:
SELECT * FROM meineTabelle WHERE meineID IN (:pklauseln)

Wenn ich nun den Parameter pklauseln mit einzelnen Werten fülle, dann funktioniert die Anweisung ohne Probleme, z.B.
SELECT * FROM meineTabelle WHERE meineID IN (1)
SELECT * FROM meineTabelle WHERE meineID IN (4)
SELECT * FROM meineTabelle WHERE meineID IN (99)

Allerdings scheint man den Parameter nicht mit mehr Werten füllen zu können. D.h. eine Zuweisung von pklauseln='1,4,99' so dass folgendes Ergebnis herauskommt funktioniert nicht:
SELECT * FROM meineTabelle WHERE meineID IN (1,4,99)

Ist eine derartige Parameterübergabe überhaupt möglich, oder mache ich etwas falsch?
Mir würde allerdings schon ausreichen, wenn ich mit der SELECT-Anweisung einen einzigen Wert oder eine Art Wildcard definieren könnte. Also:
SELECT * FROM meineTabelle WHERE meineID IN (1)
UND
SELECT * FROM meineTabelle WHERE meineID IN (*)

Aber soweit ich weiss, sind Wildcards in IN-Klauseln nicht möglich.

Wer kann mir hierzu weiterhelfen?


haentschman - Sa 20.08.11 08:51

Moin...
prinzipiell ist das nicht falsch. In Anlehnung an ein SQL Tutorial kann ich nur mal in den Raum werfen, daß die Werte in der IN Anweisung in Hochkommas stehen sollten ? :gruebel:
...da ich das IN nur in Verbindung mit Subselects verwende stellt sich die Frage nicht.

SQL-Anweisung
1:
2:
3:
SELECT "Spalten_Name"
FROM "Tabellen_Name"
WHERE "Spalten_Name" IN ('Wert1''Wert2', ...)


- welche Fehlermeldung bekommst du ?
- kannst du die Werte als Parameter übergeben ?


mandras - Sa 20.08.11 14:32

> Ist eine derartige Parameterübergabe überhaupt möglich, oder mache ich etwas falsch?

Ist meines Wissens nach nicht möglich (zumindest bei BDE/ADO/IBX)
Parameter können nur einzelne Werte übergeben, bei IN (...) ist es ja eine Liste.

Bevor Du unnötig Zeit aufwendest ein Tipp von mir: Bau den SQL-Text selbst auf.