Diskuze: Skript se dvěma SELECTY, je řešením PL/SQL?

Ostatní jazyky SQL SQL a databáze Skript se dvěma SELECTY, je řešením PL/SQL?

Avatar
JB_20
Člen
Avatar
JB_20:

Ahoj,

řeším docela zajímavý problém. Mám za úkol napsat skript se dvěma selecty nad dvěma různými tabulkami. Mělo by to fungovat tak, že pokud první select najde odpověď (nebo-li najde více než 0 záznamů), celý skript skončí a vypíše záznamy z prvního selectu. A až v případě, že nic nenajde první select, měl by se spustit druhý select.
Existuje pro tuto záležitost vůbec nějaké řešení? Zkoušel jsem něco vymyslet v SQL, ale bojím se, že možnosti tohoto jazyka tak daleko nesahají.
Díky za každou radu.

 
Odpovědět 8. dubna 11:34
Avatar
P(r)D
Člen
Avatar
P(r)D:
SELECT
                CASE
                        WHEN COUNT(tabulka1.odpoved)>0
                        THEN tabulka1.odpoved
                        ELSE tabulka2.odpoved
                END
FROM tabulka1, tabulka2

Snad ti tohle pomůže, já to nedávno nad serverem 2008r2 použil (klasická podmínka v SQL)

 
Nahoru Odpovědět 8. dubna 12:05
Avatar
JB_20
Člen
Avatar
Odpovídá na P(r)D
JB_20:

Z nějakého důvodu mi ten kod nefunguje.
Navíc si myslím, že toto není úplně vhodné řešení pro můj případ. Jednotlivými selecty totiž vybírám více než jeden sloupec tabulky. Zkusil jsem tu podmínku tedy sestavit takto:

select
case
  when count (test_a.atribut) > 0 then (select * from test_a)
  else (select * from test_b)
end
from test_a join test_b on atribut

Ale ani to mi nefunguje. A myslím, že ani nemůže.

Editováno 8. dubna 13:51
 
Nahoru Odpovědět 8. dubna 13:50
Avatar
P(r)D
Člen
Avatar
Odpovídá na JB_20
P(r)D:

Zkus to takhle, když to nepude tak zkus ty sloupce (místo hvězdy) vypsat, nemam tu na to data abych to zkoušel, ale když to napíšeš správně tak to určitě fungovat bude. Nebo si vygoogli podmínky v SQL. Takhle jak to píšeš ty, tak to opravdu fungovat nemůže, protože tam más 2 selecty za sebou...

SELECT
                CASE
                        WHEN COUNT(tabulka1.odpoved)>0
                        THEN * from tabulka1
                        ELSE * from tabulka2
                END
FROM tabulka1, tabulka2
 
Nahoru Odpovědět 8. dubna 14:48
Avatar
P(r)D
Člen
Avatar
P(r)D:

no tak sem to vyzkousel a takhle to funguje. (v předchozim příspěvku sem to měl spatne- mel sem tam navic from a chybelo tam group by)

SELECT
                CASE
                        WHEN COUNT(tabulka.sloupec1)>0
                        THEN sloupec1
                        ELSE sloupec2
                END
FROM tabulka1, tabulka2 group by sloupec1, sloupec2
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 8. dubna 15:02
Avatar
JB_20
Člen
Avatar
JB_20:

Díky moc. Pomohl jsi mi můj problém vyřešit :)

 
Nahoru Odpovědět 13. dubna 15:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.