
Navštíveno 853x

Mám klasický dotaz SELECT do databáze, tj.
SELECT column_name(s) FROM table_name
a moje otázka je: musím přesně specifikovat table_name anebo existuje nějaká metoda, jak použít pro název tabulky wildcard? tj. třeba
SELECT column_name(s) FROM stromky_%
přičemž by mi to projelo tabulky stromky_listnate, stromky_jehlicnate, stromky_naprd, .... ??? Dotazované sloupce jsou samozřejmě ve všech těch tabulkách.

22.11.2011, 14:52 |
X-sat (M)
Nebude lepší
SELECT column_name(s) FROM stromky_*
(hvězdička)
?
MySQL to neumi, ale da se to realizovat tak, ze si z INFORMATION_SCHEMA vytahnes nazvy tech tabulek.
[ Link ]

22.11.2011, 14:54 |
KFL
KFL: MS SQL, na netu jsem právě zatím nic nenašel, ty tvoje linky jsou na wildcard u LIKE, ale to neřeším, tam je to jasný.
LordPeytl: díky, dalo by se to využít
LordPeytl: paráda, funguje
Takže kdyby někdo potřeboval, pro MS SQL to je pro můj příklad:
select * from sys.tables where name like '%stromky%'
dobré, třeba se bude hodit...;-)
..ale nevrátí Ti select z těch tabulek, nebo takhle jsi to chtěl?
úplně takhle jsem to sice nechtěl, ale aspoň získám názvy všech potřebných tabulek a z těch názvů pak postavím selecty do jednotlivých tabulek.
Jako kdyby to šlo napřímo a rovnou to vyhodilo výsledek z tabulek, tak by to bylo super, ale zatím jsem takové řešení nenašel a touto oklikou to jde realizovat taky.
Kdyz uz mas seznam tabulek, tak nevytvarej dotaz do kazdy tabulky, ale udelej jeden velkej
SELECT * FROM stromky_listnate, stromky_jehlicnate, atd
Ale pozor, budes muset pojmenovat jeste nazvy sloupcu, vzhledem k tomu, ze v kazde tabulce je sloupec NAZEV, takze:
SELECT stromky_listnate.nazev nazevlistnate, stromky_jehlicnate.nazev nazevjehlicnate, atd FROM ...
No a jinak je to blbe navrzena DB, vsechny stromy maj bejt v jedny tabulce :)
no, to uz bych radsi udelal union s nejakou konstantou jako identifikaci tabulky...
shamania: jj, db je kokotsky navržená, takhle zprasenou strukturu jsem ještě neviděl a to to dělala profi firma. Leč překopání do inteligentní struktury je nyní nemožné.
No zalezi co potrebujes, pokud maji tabulky stejne sloupce a potrebujes jeden velky vysledek, tak spojit pres UNION ALL :
select * from stromky_listnate
UNION ALL
select * from stromky_jehlicnate
atd.
To co pises na zacatku lze udelat pres kursor, kde si do nej nactes nazvy tabulek a pak do temporary se hodi vzledek selectu atd.
Kdyby neco napis, dame to dohromady.