Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zestawienie punktowe z dla roznych dat z jednej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
Diabl0
Tabela:
  1. +-----------+--------------+------+-----+-------------------+-------+
  2. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  3. +-----------+--------------+------+-----+-------------------+-------+
  4. | tp_date | timestamp | NO | | CURRENT_TIMESTAMP | |
  5. | tp_pos | int(11) | NO | | NULL | |
  6. | tp_tag | varchar(32) | YES | | NULL | |
  7. | tp_player | varchar(255) | NO | | NULL | |
  8. | tp_points | int(11) | NO | | NULL | |
  9. +-----------+--------------+------+-----+-------------------+-------+


Przykładowe dane:

  1. +---------------------+--------+--------+-----------+-----------+
  2. | tp_date | tp_pos | tp_tag | tp_player | tp_points |
  3. +---------------------+--------+--------+-----------+-----------+
  4. | 2006-12-23 11:35:03 | 94 | [AMBA] | FuTuRe | 135052 |
  5. | 2006-12-19 08:35:06 | 87 | [AMBA] | FuTuRe | 135052 |
  6. | 2006-12-08 20:35:08 | 77 | [AMBA] | FuTuRe | 135052 |
  7. | 2006-12-08 14:35:03 | 77 | [AMBA] | FuTuRe | 135052 |
  8. | 2006-12-04 11:45:41 | 52 | [AMBA] | FuTuRe | 150774 |
  9. | 2006-11-28 23:59:15 | 59 | [AMBA] | FuTuRe | 135268 |
  10. | 2006-11-28 23:35:03 | 59 | [AMBA] | FuTuRe | 135268 |
  11. | 2006-11-19 14:56:09 | 63 | [AMBA] | FuTuRe | 122831 |
  12. | 2006-12-26 11:35:03 | 80 | [AMBA] | Flakon | 148148 |
  13. | 2006-12-10 05:35:06 | 76 | [AMBA] | Flakon | 138070 |
  14. | 2006-12-09 20:35:04 | 76 | [AMBA] | Flakon | 138070 |
  15. | 2006-12-30 17:35:04 | 17 | [AMBA] | Kartofel | 276466 |
  16. | 2006-12-27 17:35:04 | 9 | [AMBA] | Kartofel | 334539 |
  17. | 2006-12-26 20:35:02 | 10 | [AMBA] | Kartofel | 323416 |
  18. | 2006-12-20 02:35:03 | 10 | [AMBA] | Kartofel | 285830 |
  19. +---------------------+--------+--------+-----------+-----------+


Problemów jest kilka

1 - jak z takiej tabeli wygiągnąć listę graczy z danymi dla ostatniej daty:

  1. +---------------------+--------+--------+-----------+-----------+
  2. | tp_date | tp_pos | tp_tag | tp_player | tp_points |
  3. +---------------------+--------+--------+-----------+-----------+
  4. | 2006-12-23 11:35:03 | 94 | [AMBA] | FuTuRe | 135052 |
  5. | 2006-12-26 11:35:03 | 80 | [AMBA] | Flakon | 148148 |
  6. | 2006-12-30 17:35:04 | 17 | [AMBA] | Kartofel | 276466 |
  7. +---------------------+--------+--------+-----------+-----------+


2 - wyciągnięcie listy dla przedostatniej daty:

  1. +---------------------+--------+--------+-----------+-----------+
  2. | tp_date | tp_pos | tp_tag | tp_player | tp_points |
  3. +---------------------+--------+--------+-----------+-----------+
  4. | 2006-12-19 08:35:06 | 87 | [AMBA] | FuTuRe | 135052 |
  5. | 2006-12-10 05:35:06 | 76 | [AMBA] | Flakon | 138070 |
  6. | 2006-12-27 17:35:04 | 9 | [AMBA] | Kartofel | 334539 |
  7. +---------------------+--------+--------+-----------+-----------+


3 - wyciągnięcie z listy zestawień dla danych sprzed 24h (coś w rodzaju MAX(tp_date) WHERE tp_date < DATE_SUB(tp_date, INTERVAL 1 DAY) )


4 - wyciągnięcie zestawienia punktowego w jednym zapytaniu:

| tp_tag | tp_player | tp_date | tp_points | tp_date_2 | tp_points_2 | zmiana_1 | tp_date_3 | tp_points_3 | zmiana_2 |

gdzie:
tp_date - data ostatniego sprawdzania
tp_points - ostatnia ilość punktów
tp_date2 - przedostatnia data sprawdzania
tp_points_2 - przedostatnia ilość punktów (czyli tp_date dla daty z tp_date2)
zmiana_1 - różnica między aktualną ilością punktów a poprzednią (tp_points - tp_points_2)
tp_date3 - wczorajsza ilość puntków (~aktualna data -24h)
tp_points_3 - wczorajsza ilość punktów (czyli tp_date dla daty z tp_date3)
zmiana_2 - różnica między aktualną ilością punktów a wczorajszą (tp_points - tp_points_3)

Ostatni problem nie wiem czy da się zrealizować w jednym zapytaniu i jestem gotowy na składanie danych w php, ale do tego potrzebne mi są pomysły jak rozwiązać problem 1, 2 i 3

Za wszelkie porady i pomoc z góry dziękuję, jak potrzeba więcej danych służę pomocą (nie chciałem tutaj wrzucać zbyt wiele danych aby nie zaśmiecać forum).
bela
1.
  1. ORDER date DESC

2.
  1. ORDER date DESC LIMIT 1, 1

3. wystarczy warunek, tu masz podpowiedz http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.