Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
JB_20
Člen
Avatar
JB_20:8.4.2016 11:34

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.4.2016 11:34
Avatar
P(r)D
Člen
Avatar
P(r)D:8.4.2016 12:05
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.4.2016 12:05
Avatar
JB_20
Člen
Avatar
Odpovídá na P(r)D
JB_20:8.4.2016 13:50

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.4.2016 13:51
 
Nahoru Odpovědět
8.4.2016 13:50
Avatar
P(r)D
Člen
Avatar
Odpovídá na JB_20
P(r)D:8.4.2016 14:48

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.4.2016 14:48
Avatar
P(r)D
Člen
Avatar
P(r)D:8.4.2016 15:02

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
8.4.2016 15:02
Avatar
JB_20
Člen
Avatar
JB_20:13.4.2016 15:18

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

 
Nahoru Odpovědět
13.4.2016 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.