Portál AbcLinuxu, 12. května 2025 16:43
Dobrý den,
potřeboval bych poradit s..
SET @tabulka='jméno_tabulky';
SELECT * FROM @tabulka;
tohle nechodí. Potřebuji měnit jméno tabulky v cyklu a to jméno ještě skládat z částí textu.
Jak na to ? Chci to udělat pouze v SQL (Mysql).
Děkuji Jura
Řešení dotazu:
SET @sql = 'SELECT ... FROM ' || @tabulka; PREPARE pst FROM @sql; EXECUTE pst; ... DEALLOCATE PREPARE pst;Jinak souhlas - je to dynamické SQL a s velkou pravděpodobností to je pra... , kterou by bylo možné řešit jinak a lépe, a bezpečněji.
Data jsou v jedné tabulce
rok den mesic1 mesic2 ...mesic12
1977 1 data...
a já potřebuji
SQL skript mi to udělá pro jednotlivý rok, ale roků je vícedatum data
jo ten "partitioning" je dobrý tip. Mám ale mysql 5.0 a tak moždá důvod ke změně na 5.1. Zdraví Jura
# Leden create table rok1961_N01prac SELECT rok, den, N01 FROM teplota_denni where rok = 1961; DELETE FROM `rok1961_N01prac` WHERE `N01` IS NULL; ALTER TABLE `rok1961_N01prac` ADD `mesic` INT NOT NULL DEFAULT '1' COMMENT 'mesic v roce' AFTER `rok`; create table rok1961_N01 SELECT concat(`rok`,'-',`mesic`,'-',`den`) AS datum, N01 FROM `rok1961_N01prac`; ALTER TABLE `rok1961_N01` CHANGE `datum` `datum` DATE NOT NULL COMMENT 'datum'; ALTER TABLE `rok1961_N01` ADD INDEX ( `datum` ); DROP TABLE `rok1961_N01prac`;Potom spojím tabulky jednotlivých měsíců pomocí union a mám jeden rok. J.
Možná mi něco uniklo, ale proč je nutné dělat každý rok zvlášť ??? Něco takového by mělo udělat stejnou práci(nevím přesně, jak to má MySQL s konverzí typů, ale chodit by to mělo)
CREATE TABLE teploty
SELECT cast(concat(`rok`,'-',`01`,'-',`den`) AS DATE) AS datum, N01 as teplota FROM teplota_denni
UNION
SELECT cast(concat(`rok`,'-',`02`,'-',`den`) AS DATE) AS datum, N02 as teplota FROM teplota_denni
UNION
...
SELECT cast(concat(`rok`,'-',`12`,'-',`den`) AS DATE) AS datum, N12 as teplota FROM teplota_denni ;
ZDAR!
concat(`rok`,'-12-',`den`)Bohužel to sesype všechny ledny, unory atd... za sebe. Potřeboval bych, aby šly měsice postupně zasebou každý rok. Zdraví J.D.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.