[ tiranin @ 07.07.2005. 14:05 ] @
Imam naredbu:

SELECT YEAR(vreme) AS YR, MONTH(vreme) AS MNT,
SUM(brojpromena) AS A,
SUM(brojdogadjaja) AS B
FROM MOJATABELA WHERE testflag <> '1'
GROUP BY YR, MNT
ORDER BY YR DESC, MNT DESC

kojom hoću da nađem mesečne zbirove nekih kolona. Upit mi iz Jave na MySQL radi korektno.
Probam isto sa DerbyDB (open source verzija Cloudscape) i javlja mi kroz debugger

Column 'YR' is not in any table in the FROM list or
it appears within a join specification and
is outside the scope of the join specification or
it appears in a HAVING clause and is not in the GROUP BY list.
If this is a CREATE or ALTER TABLE statement then 'YR' is not a column in the target table.


Oči sam izgubio gledajući i ne vidim šta treba da uradim. Možda je doduše bug u derby bazi. Ne znam tačno sta SQL standardi kazu , ali se meni ovo moje čini sasvim korektno.
Da li je dozvoljeno da rezultat neke funkcije bude u GROUP BY, jer pretpostavljam da je to ovde problem ?
[ goranvuc @ 07.07.2005. 14:13 ] @
Moguce je da nije podrzan GROUP BY po alijasima. Probaj:
Code:

SELECT YEAR(vreme) AS YR, MONTH(vreme) AS MNT,
SUM(brojpromena) AS A,
SUM(brojdogadjaja) AS B
FROM MOJATABELA WHERE testflag <> '1'
GROUP BY YEAR(vreme), MONTH(vreme) 
ORDER BY YR DESC, MNT DESC
[ tiranin @ 07.07.2005. 14:16 ] @
Probao i ne radi. Javlja neku drugu poruku, sad se vise i ne secam tacnog teksta.
[ goranvuc @ 07.07.2005. 14:21 ] @
Jesi probao da izbacis alijase iz ORDER dela?
Code:

SELECT YEAR(vreme) AS YR, MONTH(vreme) AS MNT,
SUM(brojpromena) AS A,
SUM(brojdogadjaja) AS B
FROM MOJATABELA WHERE testflag <> '1'
GROUP BY YEAR(vreme), MONTH(vreme) 
ORDER BY YEAR(vreme) DESC, MONTH(vreme) DESC

Stavi tekst greske, mozda ce nam nesto znaciti.
[ tiranin @ 07.07.2005. 14:53 ] @
Kada izbacim alijase iz GROUP BY (i kada ih ima u SELECT... i kada ih nema) dela javlja

Syntax error: Encountered "YEAR" at line 1, column 144.

A kada potpuno izbacim GROUP BY i ORDER BY onda javlja

Column reference 'VREME' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.

Kada izbacim SUM(...) greška je ista kao i u prvom postu.


Zato mi se i čini da funkcije YEAR() i MONTH() nisu dozvoljene u GROUP BY ni preko alijasa niti kada su napisane kao funkcije. Mozda to vazi i za druge funkcije, nisam stigao da probam.

[ goranvuc @ 07.07.2005. 15:02 ] @
Jedno banalno pitanje:
Da li DerbyDB poznaje funkcije YEAR i MONTH?
Ja nemam vise ideja, srecno!
[ tiranin @ 07.07.2005. 15:37 ] @
Da, poznaje ih, i rade OK u obicnoj SELECT naredbi, ali u okviru ovog GROUP BY im izgleda ne radi kako treba.