Portál AbcLinuxu, 6. května 2025 14:03
zdrojová data: DATE HK IN MY 2015-01-15 1028 1279 1569 ráda bych dostala selectem všechny sloupce, které mají hodnotu větší než 1200, tj. IN, MY Je toto řešitelné? Díky!
Řešení dotazu:
Díky za odpověď, bohužel mi moc nepomohla: Ráda bych to toťiž vyřešila na úrovni MySQL. A to dynamicky, aby query nezáviselo na názvech sloupců. Díky.
SELECT DATE, HK AS value FROM table WHERE value>1200 UNION ALL SELECT DATE, `IN` AS value FROM table WHERE value>1200 UNION ALL SELECT DATE, MY AS value FROM table WHERE value>1200Délka dotazu je daní za chybnou normalizaci databáze. Doporučuji psát názvy sloupců malými písmeny.
Ano, návrh je špatný. Šlo by v mysql něco jako: for i in (select country from country) do select i AS value FROM table WHERE value>1200 done Cílem je dostat jednotlivé země a dál je použít v dalším query.
countries
(viz dokumentace)Tak mam reseni select column_name from information_schema.columns where table_schema .... and table_name = and column_name !='DATE' >PS: co brani normalizaci databaze? Aplikace co funguje a je pro me mnohem jednodussi upravit kousek nez predelavat vetsi kus. Kdyz bude cas tak treba jednou. Diky za pomoc, ty kurzory by me zajimaly jak by to query vypadalo..
DESCRIBE table;a pak iterovat s vynecháním sloupce DATE. Ovšem je to hnus. Normalizaci brání zřejmě fakt, že tu tabulku dělal někdo jiný a Terka z toho jen potřebuje vyzobat data. Už jsem před podobnou záležitost byl postaven a pokud do toho systému jiný proces sype data, tak zákazníka ke změně struktury donutíš jen stěží.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.