Vyzaduje group by order by?
Honza Pazdziora
adelton na informatics.muni.cz
Středa Srpen 9 09:49:53 CEST 2000
On Tue, Aug 08, 2000 at 11:22:07PM +0200, Ondrej Koala Vacha wrote:
>
> muze se stat, ze
>
> select xx,sum(ks) group by xx order by yy
^^^^^
predpokladam, ze tady je jeste nejake from table
Oracle Vam na tohle rekne
ORA-00979: not a GROUP BY expression
a ukaze na to yy. Proste ten sloupec yy tam neexistuje, existuje jenom
to, co pustite ven pres group by, tedy sloupce pres ktere groupujete
nebo agregace.
> muze vratit vice radku nez 1 se stejnym xx? Jinymi slovy,
> provede se automaticky jeste trideni podle sloupce v group by, nebo se to
> musi udelat explicitne? Zajimalo by me, jak je to podle normy. Mysql ted
> order by nevyzaduje, ale mam dojem, ze v jakesi verzi bez order by vratila
> prave vic radku nez jeden - ale to mozna byl bug ve vyvojove verzi.
Ale Vy prece muzete mit zaznamy
xx yy ks
123 8 1
123 4 2
098 1 1
098 8 2
Vysledek je pak
xx sum(ks)
123 3
098 3
A jak byste tady chtel tridit podle yy? Ve vysledku mate pouze sloupce
xx a sum(ks) a ty yy jdou napric nimi.
V MySQL (3.23.13) Vam to projde a projde to proto, ze v MySQL Vam
projde
select xx,yy,sum(ks) from table group by xx
A na miste yy bude nahodne hodnota z nektereho z tech radku.
Zatimco Oracle Vam na tohle zase rekne, ze not a GROUP BY expression.
Z cehoz plyne, ze i kdyz to v MySQL projde, tak to nedava smysluplne
vysledky, protoze ktera hodnota yy se pouzije neni nikde receno.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, DBI, Oracle, MySQL, auth. WWW servers, MTB, Spain, ...
------------------------------------------------------------------------
Další informace o konferenci Test