praveci upit nad tabelom naisao sam na problem sa GROUP BY
ovo je otprilike izgled tabele, a upit je izgledao ovako
ono sto je ocekivano od ovog upita bi trebalo da izgleda ovako
ali rezultat koji sam dobijao je izgledao ovako, tj nije povezivao b sa max(c) nego je rezultat prvo grupisao i onda izbacivao max za tu grupu i pored postojanja order klauzule
Problem se ispoljavao prilkom izvrsavanja ovog upita iz php koda, dok se nije manifestovao iz phpMyAdmina, i ono sto sam primetio da je jedina razlika i izmedju mog upita i onog koji koristi pMA je to sto na kraju svakog upita dodaje LIMIT 0, 30 po defaultu.
Tako dodavsi LIMIT 10 se problem resio, ovo je ocigledan bug vezan za GROUP BY i s obzirom koliko me je namucio, da ne pricam koliko sam ljudi angazovao za resavanje ovog problema, i koliko sam raznih resenja dobio, resio sam da ovo podelim sa ljudima na forumu, da se ne bi patili ko ja.
Ovaj problem je registrovan i na zvanicnom sajtu MySQL-a ali su odgovorili da je to ocekivano ponasanje, a kao sto se vidi to nije regularno.
Code:
a : b : c
--------
1 : 1 : 3
1 : 4 : 7
2 : 5 : 4
2 : 6 : 8
3 : 9 : 7
3 : 2 : 6
a : b : c
--------
1 : 1 : 3
1 : 4 : 7
2 : 5 : 4
2 : 6 : 8
3 : 9 : 7
3 : 2 : 6
ovo je otprilike izgled tabele, a upit je izgledao ovako
Code:
SELECT
a,
b,
MAX(c)
FROM
table
GROUP BY
a
ORDER BY
a, b DESC
SELECT
a,
b,
MAX(c)
FROM
table
GROUP BY
a
ORDER BY
a, b DESC
ono sto je ocekivano od ovog upita bi trebalo da izgleda ovako
Code:
a : b : c
--------
1 : 4 : 7
2 : 6 : 8
3 : 9 : 7
a : b : c
--------
1 : 4 : 7
2 : 6 : 8
3 : 9 : 7
ali rezultat koji sam dobijao je izgledao ovako, tj nije povezivao b sa max(c) nego je rezultat prvo grupisao i onda izbacivao max za tu grupu i pored postojanja order klauzule
Code:
a : b : c
--------
1 : 1 : 7
2 : 5 : 8
3 : 9 : 7
a : b : c
--------
1 : 1 : 7
2 : 5 : 8
3 : 9 : 7
Problem se ispoljavao prilkom izvrsavanja ovog upita iz php koda, dok se nije manifestovao iz phpMyAdmina, i ono sto sam primetio da je jedina razlika i izmedju mog upita i onog koji koristi pMA je to sto na kraju svakog upita dodaje LIMIT 0, 30 po defaultu.
Tako dodavsi LIMIT 10 se problem resio, ovo je ocigledan bug vezan za GROUP BY i s obzirom koliko me je namucio, da ne pricam koliko sam ljudi angazovao za resavanje ovog problema, i koliko sam raznih resenja dobio, resio sam da ovo podelim sa ljudima na forumu, da se ne bi patili ko ja.
Ovaj problem je registrovan i na zvanicnom sajtu MySQL-a ali su odgovorili da je to ocekivano ponasanje, a kao sto se vidi to nije regularno.