Cytat(nospor @ 2006-03-29 08:13:46)
@Aztech
Cytat
Jeśli używasz count z tego co pamiętam warunki musza znajdować się nie w WHERE ale w HAVING:
I tak, i nie. to zalezy jakie warunki. Jesli chcemy dac warunek na to, co wyliczamy w wyniku grupowania, to trzeba dac w having. Jesli jednak warunkujemy zwykle pole, to ma byc w where, jak do tej pory.
@Baki Mysql ma pewien bobol, ktory mi sie bardzo nie podoba. A mianowicie, gdy formatujesz pewne pole i robisz z niego alias, to niestety ten alias nie jest widoczny w where. Trzeba jeszcze raz w where formatowac:
SELECT count(id) AS visit_count, DATE_FORMAT(DATA, '%Y') AS visit_year, DATE_FORMAT(datetime, '%c') AS visit_month
FROM stats
WHERE DATE_FORMAT(DATA, '%Y')='2006' GROUP BY visit_year, visit_month ORDER BY visit_year, visit_month
Odnosnie pierwszego zapytania.
Jestes pewien ze podales na dobry komunikat bledu?
"Unknown column 'visit_count_max' in 'field list'"
powinno raczej byc:
"Unknown column 'visit_count' in 'field list'"
Nie mozesz robic MAX(visit_count), gdyz visit_count powstaje w wyniku agregacji danych. A nie mozna z tego robic max. Max mozesz robic bezposrednio na polach. Czyli ty bys musial dac max(id). zwroci ci to max id dla danego grupowania.
Co chciales dokladnie osiągnąc tym zapytaniem? Czego max chcesz pobrac? max liczbę wizyt ze wszystkich miesięcy? Jak tak, to posortuj po tym wyniku, i wowczas pierwszy (ostatni) rekord, bedzie zawieral max
Hi
@Aztech: Having tu nic nie da..
@nospor.. dzieki jesli chodzi o aliasy rzeczywiscie Twoje rozwiazanie dziala poprawnie.. i masz racje ze to trche dziwne zachowanie jesli chodzi o MySql'a ze trzeba jeszcze raz przeformatowac czas..
co do mojego zapytania o MAX'owanie wyniku..
rzeczywiscie zapyanie:
SELECT count(id) AS visit_count, DATE_FORMAT(DATA, '%Y') AS visit_year, DATE_FORMAT(DATA, '%c') AS visit_month, MAX(visit_count) AS visit_count_max
FROM stats
WHERE DATE_FORMAT(DATA, '%Y')='2006' GROUP BY visit_year, visit_month ORDER BY visit_year, visit_month
daje blad: Unknown column 'visit_count' in 'field list'
a juz tlumacze co mialo na celu robienie MAX(visit_count) AS visit_count_max
w aliasie visit_count mysql zwraca mi zliczona wartosc odwiedzin dla danego miesiaca w roku (uzyskana dzieki grupowaniu) chcialem rowniez zeby to zapytanie zwracalo jednosczesnie najwieksza.maksymalna liczbe odwiedzin dla miesiaca ktory ich mial najwiecej.. tak bym mogl to potem wykorzystac do wyliczenia wielkosci wykresu.. ale z tego co sugerujsze ze jesli sie nie da robic MAX'a na agregowanych danych to obawiam sie ze albo bede musial zrobic kolejne zapytanie albo obliczyc MAX korzystajac z php
nieprawdaz?
pozdrawiam i dzieki za pomoc!