Tak, a teď to vysvětlete!
16 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Narazil jsem na nějaké podivné chování příkazu SELECT. Zkuste si to sami: SELECT '0','0','0','0','0','3','1' FROM libovolna_tabulka Výsledkem je: 0 1 0 3 0 3 1 Chápete? Kdykoli se do SELECTU pokusím zapsat číselnou konstantu, objeví se ve dvou sloupcích: v tom, kde má, a pak v tom, jehož index má. Je to správné chování nebo je to chyba? Já potřeboval jen zapsat do jednoho sloupce v složitějším dotazu konstantu (neptejte se proč, prostě to jinak nešlo), a dostal jsem z toho tohle, tak teď nevim co s tim.
-
To neni divne chovani SELECTu, to je divne chovani TVEHO SELECTu :))) Zkusel jsem to a chodi to normalne, podle predpokladu to vrati tolik radku, kolik ma ta moje tabulka a kazdy radek ma 7 sloupcu s hodnotami '0','0','0','0','0','3','1' , presne jak by clovek predpokladal. Mam MySQL verze 3.23.49. Mozna bude chyba v tom, ze je to jak pises "soucasti slozitejsiho dotazu", takze to muze ovlivnovat spousta veci.
-
Ne, napsal jsem to přesně tak, jak je to tady, samostatně, ne součástí něčeho jiného. Vrátí to vždy to, co jsem napsal. To jsem taky zkopíroval: SELECT '0','0','0','0','0','3','1' FROM Kniha WHERE 1 Výsledek: 0 1 0 3 0 3 1 v každém řádku. Třeba to souvisí s nastavením typu tabulky. ? Já nevim.
-
Zkus sem poslat strukturu te tabulky Kniha...
-
Na struktuře nezáleží. Zkoušel jsem to na všech tabulkách různých struktur! Zkus to na čemkoliv.
-
<HTML><tt>mysql> SELECT '0','0','0','0','0','3','1' ; +---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 3 | 1 | +---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 3 | 1 | +---+---+---+---+---+---+---+ 1 row in set (0.00 sec) </tt></HTML>
-
Presne tak! Zkusil jsem to na "cemkoliv" a opravdu - viz mira - hazi mi to stejne vysledky, a to presne podle predpokladu, zadny zmateny cisla jak's napsal na zacatku.
-
Divný. Zkusil jsem to úplně na všech tabulkách ve dvou různých databázích, které na webzdarma mám. Jedna z nich je elektrostraka.webzdarma.cz Všude mi to dalo stejné hodnoty: 0103031 vůbec nechápu, co se děje. Miro, můžeš mi to prosím zkusit na mojí databázi? Uvidíš sám. ;-)
-
SELECT 1,3,4,5 FROM ... (Bez 'uvozovek' ve jmene sloupcu)
-
Bez uvozovek (nebo apostrofů) se mi to chová úplně stejně. Copak jsem jediný, komu se to stalo? To přece neni možný!
-
Ja se musim pridat k mirovi a tomasovi, mam stejne - korektni chovani DB. Server version Mysql 4.0.20-standard pro Linux. Opravdu mrkni na verzi a zkus upgrade :-) mysql> select '1','2','3','4' from TEST.tab1 -> ; +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 | +---+---+---+---+ 5 rows in set (0.00 sec)
-
záleží, jaký se použijou uvozovky, jestli se nepletu. MySQL používá jiné pro jména (``) a jiné pro hodnoty (' ') nebo (" "). Třeba je problém v tom... SELECT sloupec FROM tablka WHERE podminky tohle znáš... mysql> select nadpis from hledani; +----------------------------+ | nadpis | +----------------------------+ | MySQL Tutorial | | Jak na PHP | | C/C++ - praktický průvodce | +----------------------------+ 3 rows in set (0.00 sec) mysql> select "nadpis" from hledani; +--------+ | nadpis | +--------+ | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | | nadpis | +--------+ 18 rows in set (0.07 sec) mysql> select `nadpis` from hledani; +----------------------------+ | nadpis | +----------------------------+ | MySQL Tutorial | | Jak na PHP | | C/C++ - praktický průvodce | +----------------------------+ 3 rows in set (0.01 sec) mysql>
-
Samozřejmě, že když tam dám SELECT '1','2','3','4'; , tak to funguje, protože se přepíše 1123 na 1234, když se to zpracovává. Ale '4','3','2','1' dá výsledek 4,1,2,1. SELECT "4","3","2","1"; udělá totéž SELECT 4,3,2,1; taky a SELECT `4`,`3`,`2`,`1`; nefunguje vůbec, protože `4` se žádný sloupec nejmenuje. To jsou snad všechny možné kombinace uvozovek a apostrofů. Vše je odzkoušeno na databázi WEBZDARMA! (kontrétně elektrostraka.webzdarma.cz) Prostě v životě nemůžu dostat jako výsledek SQL dotazu v některých sloupcích konstantní číslo, ať dělám cokoliv. :-(
-
A víte co? Vykašlete se na to. Už to neřešte. Prostě je tam chyba a já to obejdu tím, že tam dám výraz: SELECT 1*4,1*3,1*2,1*1; a už to funguje :-D
-
Machr to mě nenapadlo ... nevim už jakej přesně problem sem s tim měl, ale když je jako název sloupce tabulky číslo a nic víc tak to dělá bordel.
-
Ještě by šlo určitě zkusit SELECT 1 as jmeno_sloupecku, 2 as jmeno_sloupecku from tabulka moc jsem po tom nepátral, ale asi si to chce vytvořit jméno sloupečku začínající číslem a to ho asi zmate. A zkusti sloupeček pojmenovat bude asi rychlejší jak násobení, byť násobení jedničkou. (proč jsi k tomu nepřičetl nulu? to by bylo taky rychlejší jak násobení?)