Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> grupowanie z jednym polem max
MadMark
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

Ostrzeżenie: (0%)
-----


cześć,
potrzebuję pomocy z grupowaniem tj. mam tabelę
  1. CREATE TABLE modifications (
  2. id int PRIMARY KEY AUTO_INCREMENT,
  3. date timestamp DEFAULT timestmp NOT NULL,
  4. object_id int, -- fk to objects
  5. status_id int, -- fk to statuses
  6. );


i chciałbym pobrać wszystkie wiersze, w których status_id jest najnowszy (max(date)) w ramach jednego object_id. Mówiąc krótko, dla każdego okiektu potrzebny mi najnowszy status.

Działa (ale za wolno, bo ok. 200 ms)
  1. SELECT f.* FROM modifications f WHERE (f.obiect_id, f.date) IN (SELECT g.obiect_id AS obiect_id, max(g.date) AS date FROM modifications g GROUP BY g.obiect_id)


Samo zrobienie:
  1. SELECT * FROM modifications GROUP BY obiect_id HAVING date=max(date)

nie działa, ponieważ zwraca pierwszy napotkany status, a nie ten pasujący do maksymalnej daty (nie najnowszy, a pierwszy insertowany).

Jak powinno wyglądać najprostsze zapytanie, żeby zwrócić najnowszy status dla każdego obiektu ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Źle przecyzytałem problem.
Czy większa data oznacza większe id, czy też dla mniejszego id może być większa data (oczywiście w ramach tego samego object_id)?
Go to the top of the page
+Quote Post
MadMark
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 12.12.2016, 12:01:18 ) *
Źle przecyzytałem problem.
Czy większa data oznacza większe id, czy też dla mniejszego id może być większa data (oczywiście w ramach tego samego object_id)?

Większa data może oznaczać mniejsze ID. Dlatego właśnie potrzebuje wybrać to id, które należy do rekordu z największą datą, mysql zwraca mi niestety pierwsze napotkane.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 02:49