Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Najnowsze rekordy, dla poszczególnych userów
kuubek
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 7.04.2010

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


Witam
Chciałbym się zwrócić do szanownych kolegów o pomoc w rozwiązaniu takiego problemu.
Ogólnie chodzi o wizualizację danych z szybko rozrastającej się tabeli.
Tabela zapisuje zdarzenia:
Posiada kolumny oczywiście ID, lokalizacja_id, user_id, data.
Osób jest około 3000tyś lokalizacji około 30. Chodzi o to aby pokazywać najnowsze rekordy dla poszczególnych osób, aby można było stwierdzić w jakiej lokalizacji są.


  1. SELECT * FROM `location` WHERE (`lokation_id`,`data`)
  2. IN
  3. (
  4. SELECT `lokation_id`, MAX(`data`) FROM `location` GROUP BY `lokation`
  5. )



W zasadzie to zapytanie działa, ale przy małej ilości danych, niestety już przy kilkunastu tysiącach rekordów koszmar, może macie jakieś propozycję? Może jedno zapytanie, aha i jeszcze problem aby uzyskać dane z jenej lokalizacji(czyli kto aktualnie jest tam zarejestrowany)
pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
reaktor
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 2.01.2010

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


Mozna w ten sposob:

  1. SELECT l.lokalizacja_id, l.user_id, l.DATA
  2. FROM location l
  3. JOIN
  4. (
  5. SELECT max(DATA) AS maxdat, user_id FROM location GROUP BY user_id
  6. ) x
  7. ON l.user_id=x.user_id AND l.DATA=x.maxdat


Pamietaj tylko, ze w wynikach nie bedzie osoby ktora jeszcze nigdzie nie pojechala.
Drugi problem rozwiazesz prawie tak samo
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 05:08