Podminka na pojmenovany sloupec

19 views
Skip to first unread message

MaReK

unread,
May 23, 2012, 3:02:11 AM5/23/12
to fireb...@googlegroups.com
Dobre rano/dopoledne,
zrejme jen neumim hledat v dokumentaci.
Mam dotaz typu
SELECT coalesce(sloupec1, sloupec2,0) AS prava FROM uzivatele;
Potrebuji jej omezit na ty kde bude vystup prav ne0, takze logicky mi
to vede na konstrukci:
SELECT coalesce(sloupec1, sloupec2,0) AS prava FROM uzivatele WHERE prava<>0;
Bohuzel pri ladeni (v DBeaveru) narazim na to, ze Fb nezna sloupecek
`prava`. V SQLite i MySQL mi tato konstrukce funguje :-(.
Dekuji za malou napovedu
MaReK

Jiri Cincura

unread,
May 23, 2012, 4:08:09 AM5/23/12
to fireb...@googlegroups.com
2012/5/23 MaReK <marek.o...@gmail.com>:
> SELECT coalesce(sloupec1, sloupec2,0) AS prava FROM uzivatele WHERE prava<>0;

select * from (SELECT coalesce(sloupec1, sloupec2,0) AS prava FROM
uzivatele) where prava <> 0;

nebo

with FooBar as
(
SELECT coalesce(sloupec1, sloupec2,0) AS prava FROM uzivatele
)
select * from FooBar where prava <> 0

--
Jiri {x2} Cincura (x2develop.com founder)
http://blog.cincura.net/ | http://www.ID3renamer.com

MaReK

unread,
May 23, 2012, 6:17:37 AM5/23/12
to fireb...@googlegroups.com
Děkuji velmi,
na ten "obalovací" SELECT jsem zapoměl. Bohužel jemné niance mezi různými dtb.
Situaci jsem zjednodusil v realu jsou v tech coalesce subSELECTY, neni
to efektivni ani nahodou, ale ta struktura se nacte jen pri spusteni
programu, takze me az tolik netrapi.
Verze jak by to melo vypadat je o dost osklivejsi:

SELECT t1.utvar, (t1.utvar || ' (' || t1.nazev || ')') AS nazev_cely,
COALESCE((select 1 FROM utvary WHERE utvary.mu=311 AND
utvary.a001=t1.a001), 0) AS user_mzdy,
COALESCE((SELECT 1 FROM utvary WHERE utvary.personal=311 AND
utvary.a001=t1.a001),
(SELECT DISTINCT 1 FROM utvary WHERE utvary.personal_all<>0 AND
utvary.a001=t1.a001), 0) AS user_personal,
COALESCE((SELECT 1 FROM utvary WHERE utvary.pam=311 AND utvary.a001=t1.a001),
(SELECT DISTINCT 1 FROM utvary WHERE utvary.pam_all<>0 AND
utvary.a001=t1.a001), 0) AS user_pam,
COALESCE((SELECT 1 FROM utvary WHERE utvary.hlavni=311 AND
utvary.a001=t1.a001), 0) AS user_hlavni,
COALESCE((SELECT 1 FROM utvary WHERE utvary.sprava=311 AND
utvary.a001=t1.a001), 0) AS user_sprava
FROM utvary t1 WHERE user_MZDY<>0;

Doufam ze se dostanu k tomu co potrebuji, tj. po prihlaseni vybrat k
uzivateli utvary a prava (nektera mohou byt i ve tvaru _all, tj mohou
tu cinnost delat vsichni) jez k tem utvarum ma. Jak se znam, vybral
jsem si nejslozitejsi moznou cestu.
Ted to jen vyladit
MaReK

okbob

unread,
May 23, 2012, 6:39:44 AM5/23/12
to Firebird (CZ)
Ahoj

On May 23, 12:17 pm, MaReK <marek.olsav...@gmail.com> wrote:
> Děkuji velmi,
> na ten "obalovací" SELECT jsem zapoměl. Bohužel jemné niance mezi různými dtb.

bez toho obalovaciho SELECTu by ti to treba nefungovalo i v pg. Podle
standardu uvnitr dotazu nevidis aliasy na sloupce.

Pavel

marek.o...@gmail.com

unread,
May 23, 2012, 4:15:10 AM5/23/12
to Firebird (CZ)
Děkuji,
"obalovací" SELECT, neboli jemné niance mezi různými databázemi.

MaReK

unread,
May 25, 2012, 7:51:15 AM5/25/12
to Firebird (CZ)

Omlouvám se za duplicitní příspěvek. Psal jsem i z webového formu Google groups a jeden se značně opozdil.
MaReK

Dne 25.5.2012 13:45 "marek.o...@gmail.com" <marek.o...@gmail.com> napsal(a):
--
Archiv a podrobnosti této konference:
http://groups.google.com/group/firebird_cz .
Reply all
Reply to author
Forward
0 new messages