|
|
Chybka a uznani
|
17.7.2005 22:35
Petr Aubrecht
|
DD,
v zaveru prvni dotaz neni dobre z nejakych procesnich duvodu, ale je to proste syntakticka chyba. Cislo smlouvy neni v group by (umyslem mozna bylo ho tam uvest, pak to dava smysl). Ten trik se selectem v joinu me dost zaujal. Takhle podle oka to vypada jako rychlejsi varianta selectu v selectlistu... Mno, jeste to prozkoumam. Diky |
|
|
Re: Chybka a uznani
|
18.7.2005 13:09
Petr Zajíc
|
Mám někde chybu? Z příspěvku jsem bohužel nepochopil kde. Jinak select v joinu se skutečně používá, je to prostě poddotaz jinde než tam, kde byste ho možná čekali ;-) |
|
|
Re: Chybka a uznani
|
20.7.2005 11:07
Petr Aubrecht
|
select zakaznik, max(datum), cislosmlouvy from smlouvy group by zakaznik; Musí nahlásit syntaktickou chybu: cislosmlouvy neni v group by. Select v joinu je posledni misto, kde jsem select jeste nevidel :-) |
|
|
Re: Chybka a uznani
|
20.7.2005 15:20
Hugo
|
Syntakticky je to spravne. Seskupi to tabulku podle zakazniku, najde nejvyssi datum daneho zakaznika a pote vybere odpovidajici cislo smlouvy. |
|
|
Re: Chybka a uznani
|
21.7.2005 16:48
Petr Aubrecht
|
Omlouvám se, že to nezkouším sám, ale nedá mi to: co vrátí při dotazu: select zakaznik, max(datum), min(dluh), cislosmlouvy
from smlouvy
group by zakaznik; Číslo smlouvy pak odpovídá minimálnímu dluhu a nebo maximálnímu datu? |
|
|
Re: Chybka a uznani
|
21.7.2005 18:03
Petr Zajíc
|
Vrátí číslo smlouvy prvně zadané u tohoto zákazníka do tabulky. Což je důvod, proč je to logicky nepoužitelné, protože číslo prvně zadané smlouvy nemusí nutně mít ani maximální datum, ani minimální dluh. Může to dokonce být i smlouva, kde tyto hodnoty nejsou zadány vůbec, pokud je ve sloupcích datum či dluh povoleno vložení hodnoty NULL. |
|
|
Re: Chybka a uznani
|
21.7.2005 08:07
Petr Zajíc
|
Aha, už rozumím. Ne, to je skutečně syntakticky správně, ovšem logicky je to prakticky nepoužitelné. |
|
|
Re: Chybka a uznani
|
21.7.2005 16:46
Petr Aubrecht
|
Ne, skutečně je to syntakticky špatně. Alespoň podle SQL92. Zkusil jsem u sebe a mysql opravdu (jako jediná mně známá databáze) nezakričí. Myslím, že mnoho programátorů si s tím musí užít celé dny zjišťování, proč se ve složitém dotazu vrací nesmysly -- prostě zapomněli něco dopsat do group by. Další bodík do argumentace, proč preferuji PostgreSQL ;-) |
|
|
Re: Chybka a uznani
|
21.7.2005 17:01
MaReK Olšavský
|
Takovych, co preferuji PostgreSQL je tu vice... Me treba v MySQL chybi (myslim v tech, co jsou rozsirene na hostinzich a ne ve vicemene experimentalni rade 5) transakce, byt to s da pouzit s jinymi tabulkami, a spouste (triggery). Stored Procedury taky nejsou k zahozeni, ale i to se da v MySQL obejit jejich ulozenm do externi knihovny... Zase treba typ ENUM z MySQL mi v zakladni instalaci PostgreSQL docela chybi. |
|
|
Re: Chybka a uznani
|
21.7.2005 18:09
Petr Zajíc
|
My si asi nerozumíme: O něco výše jste napsal, že to, cituji "Musí nahlásit syntaktickou chybu: ". Nemusí. Nenahlásí. Příkaz, který projde, označuji jako "sytntakticky správný" a tento příkaz v MySQL prostě projde. Beze zbytku se ale dá souhlasit s tím, že je to LOGICKY nepoužitelné a je pravda, že DMBS, které znám, to převážně nepovolí (kromě výše zmiňovaných ani třeba Oracle nebo M$SQL). |
|
|
Re: Chybka a uznani
|
28.7.2005 23:43
Petr Aubrecht
|
Nerozumíme si opravdu drobně :-) Psal jsem, že podle normy je to špatně. Že to MySQL nenahlásí jako chybu, je druhá věc. Lišíme se pouze v autoritě, která určuje syntaktickou správnost. |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|