SQL-ben hogy lehet táblanév-be paramétert helyettesíteni?
Oracle SQL-ről van szó konkrétan.
Van pár azonos szerkezetű táblám amelynek a neve a következő formátumú:
tablanev{kód}
ahol a kód 3 jegyű azonosító (cégszámot jelöl) tehát minden céghez van ugyanolyan szerkezetű/tematikájú tábla de nyilván a táblanév más, mert más céghez tartozik.
Nos én ezeket unionnal szoktam összekapcsolni, hogy az összes cég adatait egyszerre jelenítse meg (és ebből csinálok view-t)
select * from tablanev105 union all select * from tablanev107 union all select * from tablanev115; --ez hozza az összes rekordot ami kell
Szóval azt szeretném elérni, hogy meghatározott paraméterlista alapján ({105,107,115})
előálljon a selectben a tablanev105, tablanev107 és tablanev115 nevű táblám (nyilván ezek léteznek és ezért meg tudom a paramétereket is mondani) majd unionolni őket, hogy mind a 3 cég tábláját lássam.
Van erre valami megoldás SQL-ben (oracle), hogy definiálok egy paraméterlistát és azokat egyenként beillesztem a táblanévbe?
Ha igen, konkrétan mi a szintaxisa?
#1 nem feltétlen. Láttam már sokszor, hogy plsql-ben van megírva még az email küldés is. Tehát az adatbázis elkészíti a riportot és még ki is küldi emailben...
Amúgy van rá megoldás:
Bár szépnek nem mondanám. :D Érdemes még keresgélni, hátha van jobb.
#3: Ez cégspecifikus. Ne tőlem kérdezd. Igazából csak arra lennék kíváncsi, hogy x db tök ugyanolyan szerkezetű táblát union-nal hogy lehet összefűzni, miközben a táblanevek csak a cégkódban különböznek és a kódokat egyszerűen a táblanév után fűzöm sztringkent egyenként olyan sorrendben ahogy egy listában megvan adva.
Tehát ha 3 táblanevet tartalmaz az union (3 db select), akkor 3 db kódot adok meg egy listában.
{102,103,105}
select ..from tabla102 union all
select ... from tabla103 union all
select ... from tabla105;
Első válaszolóé lehet talán a legegyszerűbb. Nem kell túlbonyolítani!
x db kód és utána azokat táblanévként x db tábla nevében behelyettesiteni a szükséges helyre.
select * from tablename{paraméter};
Csinálsz egy view-t, amibe behúzod az összes tábládat unionnal + egy új oszlopot a kódnak:
CREATEVIEW osszes_tabla AS
SELECT *, '102' as table_name FROM tabla102
UNION ALL
SELECT *, '103' as table_name FROM tabla103
UNION ALL
SELECT *, '104' as table_name FROM tabla104
...
ezek után ezt a view-t query-zed:
SELECT ... FROM osszes_tabla WHERE table_name IN ('103','102');
#6: Hát nem erre gondoltam, hanem inkább egy sztringösszefűzésre a tábla nevére vonatkozóan.
from táblanév{paraméter} ahol paraméter=102,103,105...
Tényleg nincs erre egyszerű megoldás?
SQL szintjén szerintem nincs. Ha mindenképpen ezt akarod, az applikáció szintjén kell megoldanod.
De az union-view megoldással mi a gondod?
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!