Lekérdezésben paraméterre feltétel

Adatbázis kezelő

Lekérdezésben paraméterre feltétel

HozzászólásSzerző: Butters » 2010. március 2., kedd 17:27

Lekérdezésben akarok egy :x paramétert úgy használni, hogy ha üresen hagyják akkor ne szűkitsen, ha viszont van értéke akkor "tábla"."x" = :x szűkítés legyen. Sehogy sem sikerül eltalálnom a szintaktikát. Próbálkoztam azzal, hogy
Kód: Egész kijelölése   KinyitásÖsszecsukás
AND (:x is null or "tabla"."x" = :x)
, de ez :x null értéke esetén nem hoz eredményt. Másik elképzelésem a CASE WHEN használata volt, bár nem tudom, hogy azt lehet-e WHERE feltételben használni. Az így nézet ki:
Kód: Egész kijelölése   KinyitásÖsszecsukás
AND CASE :x WHEN :x IS NULL THEN 1=1 ELSE "tabla"."x" = :x END CASE

Ez meg syntax error -os
OpenOffice 3.2/Windows XP
Butters
 
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04

Re: Lekérdezésben paraméterre feltétel

HozzászólásSzerző: Butters » 2010. március 2., kedd 17:29

A :x smiley -k helyére azt akartam írni, hogy ":x" (kettőspont x), nem tudtam, hogy az egy smiley kód.
OpenOffice 3.2/Windows XP
Butters
 
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04

Re: Lekérdezésben paraméterre feltétel

HozzászólásSzerző: Butters » 2010. március 3., szerda 16:48

Sokat szenvedtem a leírt problémával, és úgy tűnik, hogy ez egy bug. Ha az ":x" paraméteren kívűl bármi mást is bekérek akkor üres lesz a lekérdezés, Ha csak az ":x" -et akkor működik, bár ilyenkor is fennáll az a kellemetlen körülmény, hogy ha a kódban többszőr hivatkozunk egy paraméterre akkor a lekérdezés futtatásakor helyesen csak egyszer kéri be, de jelentésben már annyiszor ahányszor a kódban szerepel. Erre találtam egy megoldást az angol fórumon, leírom hátha másnak is segít még. A select részben kell bekérni a paramétert, alias -t adni neki és a feltételben az alias -ra hivatkozni.
Kód: Egész kijelölése   KinyitásÖsszecsukás
select "barmi", :xy AS "akarmi" from "table" where ("akarmi" is null or "table"."barmi" = "akarmi")

Önmagában ez remekül működik is, de ahogy bekerül a lekérdezésbe egy másik paraméter is a lekérdezés eredménye üres lesz. Van esetleg erre is megoldás?
OpenOffice 3.2/Windows XP
Butters
 
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04


Vissza: Base

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég

cron