Kezdőoldal » Számítástechnika » Programozás » SQL-ben hogy lehet táblanév-be...

SQL-ben hogy lehet táblanév-be paramétert helyettesíteni?

Figyelt kérdés

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?



2021. szept. 8. 23:20
 1/9 anonim ***** válasza:
Ezt nem az adatbázis szerveren szokták csinálni, hanem mielőtt a lekérdezés elmegy a szervernek. Gondolom egy kliens gépen/szoftverben áll össze az SQL string, ott érdemes ezt megoldani, sima string összefűzéssel.
2021. szept. 9. 00:41
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

#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:

[link]

Bár szépnek nem mondanám. :D Érdemes még keresgélni, hátha van jobb.

2021. szept. 9. 08:30
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
Ha a tábláknak azonos a struktúrája, miért nem csinálsz egy táblát belölük úgy, hogy a kódot beviszed egy új oszlopnak? Igy a kódra matchelhetsz WHERE-be.
2021. szept. 9. 09:48
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
#3 Jogos, de lehet, hogy adatbiztonsági okokból van külön, talán három cégnél három külön szerveren.
2021. szept. 9. 11:05
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

#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};

2021. szept. 9. 12:12
 6/9 anonim ***** válasza:

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');

2021. szept. 9. 15:57
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

#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?

2021. szept. 9. 19:04
 8/9 anonim ***** válasza:

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?

2021. szept. 9. 19:08
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
#8: Az a gond, hogy gyakran csak egy spontán lekérdezést akarok egyszer 3 cégre, egyszer meg 10 cégre vonatkozóan és utóbbi esetben ctrl+c ctlr+v-zhetek 10-szer utána meg egyesével javíthatom ki az utolsó 3 karaktert a táblanévben az adott cégazonosítóra és egyszerűbb lenne egy paraméter listában átírni, hogy onnan hivatkozzon a táblanevekre. Csupán ennyi. Meg az union-olást úgy tudom amúgy is mellőzni kell, mert memóriaigényes.
2021. szept. 9. 19:13

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!