[SQL] Trudne zapytanie

0

Witam

mam niby prostą sprawę - wykonanie zapytania, które grupuje dane według kolumny p_id przy czym wyciąga "przedstawiieli" o najnowszej dacie.

p_id dattim
2 2006-07-15 1722
3 2006-07-15 1722
2 2006-07-18 1421
3 2006-07-18 1421

Wykonuje:
SELECT * FROM tabelka GROUP BY p_id ORDER BY dattim DESC

Rezultat to :
2 2006-07-15 1722
3 2006-07-15 1722

czyli nie najnowsze wpisy

Oczekiwany:
2 2006-07-15 1722
3 2006-07-15 1722

Czy jst ktoś kto potrafi zrobić te zapytanie ?

0

wina GROUP BY. Usuń to, a następnie w php sprawdzaj, czy takie id juz sie pojawiło. Jeśli nie - znaczy, że jest to najnowszy wpis z tym id.

Problem z tym zapytaniem tkwi w tym, że MySQL najpierw grupuje, a dopiero później zajmuje się sortowaniem.

0

w PHP to każdy potrafi, chodzi o to by z SQLa wyssać tylko to co potrzba. Po co wyciągać tysiące rekordów gdy potrzebuje 2 :] ?

Próbuje jeszcze tak :

SELECT DISTINCT (p_id), dattim FROM tabelka ORDER BY dattim DESC

niestety zwraca mi 4 rekordy - wysztkie. Czyli funkcja DISTINCT- unikalny nie działa tu

0

hmmm, jesli jest tak jak mowisz, ze oczekujesz... a otrzymujesz... to dostajesz to co chcesz :P
(wiem, nie chcesz z 15 tylko z 18)

Nie wiem w jakim formacie przechowujesz date, ale powinno zadzialac cos takiego:
SELECT p_id, max(dattim) as ostatnia_data FROM tabelka GROUP BY p_id

0

To co powyżej nie jest dobre

ale juz udało mi się :

SELECT tab.* FROM (SELECT * FROM tabelka WHERE url_id=1 ORDER BY dattim DESC) AS tab GROUP BY tab.p_id

0
SELECT * FROM `tabelka`  ORDER BY p_id, dattim DESC
0
shivanwk napisał(a)

To co powyżej nie jest dobre
Tzn to moje nie dziala?? Dziwne, jak dalem typ datatime, to zwracalo poprawnie.
To co Ty podales, moze i by dzialalo, ale troche "na okraglo", poza tym tylko na nowszych bazach, gdzie masz select'y w select'ach

0
desperat napisał(a)
shivanwk napisał(a)

To co powyżej nie jest dobre
Tzn to moje nie dziala?? Dziwne, jak dalem typ datatime, to zwracalo poprawnie.
To co Ty podales, moze i by dzialalo, ale troche "na okraglo", poza tym tylko na nowszych bazach, gdzie masz select'y w select'ach

Właśnie to co napisał Desperat powinno działać, bo przecież frazy GROUP BY używa się z funkcjami agregującymi...

1 użytkowników online, w tym zalogowanych: 0, gości: 1