[SQL] Trudne zapytanie

Odpowiedz Nowy wątek
2006-07-18 20:26
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 17:23:22
3 2006-07-15 17:23:22
2 2006-07-18 14:49:21
3 2006-07-18 14:49:21

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

Rezultat to :
2 2006-07-15 17:23:22
3 2006-07-15 17:23:22

czyli nie najnowsze wpisy

Oczekiwany:
2 2006-07-15 17:23:22
3 2006-07-15 17:23:22

Czy jst ktoś kto potrafi zrobić te zapytanie ?


Pozostało 580 znaków

2006-07-18 20:32
nav
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.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-07-18 20:47
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


Pozostało 580 znaków

2006-07-18 20:55
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


SOA (Standartowa Odpowiedz Administratora):
"Dziwne... a u mnie dziala"
:D <font color="white">

Pozostało 580 znaków

2006-07-18 21:06
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


Pozostało 580 znaków

2006-07-18 21:19
0
SELECT * FROM `tabelka`  ORDER BY p_id, dattim DESC

Pozostało 580 znaków

2006-07-18 21:26
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


SOA (Standartowa Odpowiedz Administratora):
"Dziwne... a u mnie dziala"
:D <font color="white">

Pozostało 580 znaków

2006-07-18 21:40
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...


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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