Myślę już trochę jakby to ugryźć i coś nie mogę wymyślić. Otóż mam tabelę w której są trzy kolumny (pomijając id) - server_id, numbers oraz time. Potrzebuję zsumować kolumny numbers, które należą do wybranego rekordu w server_id i mają tę samą datę w time (data jest przechowywana w formacie TIMESTAMP , więc muszę to rozczytać w skrypcie php na format np. H:s). Podrzucicie pomysły lub przykłady bym mógł to zrozumieć i napisać samemu? :)

- Rejestracja:prawie 17 lat
- Ostatnio:2 dni
- Postów:2792
Mają tę samą datę, czy wartość? Jesli wartość to Group by server_id, time
. A jesli data, to zamień w tym grupowaniu Time na funkcję która liczy datę...
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 6 lat
- Postów:14
W sumie no tak. Teraz widzę, że coś nie tak ze mną było w godzinach popołudniowych. Przecież to ogromnie proste. Zrobiłem to jednak przez WHERE:
SELECT SUM(users) FROM pages_users WHERE server_id = 22 and time = xxxx
Prawdziwy problem dla mnie zaczyna się tutaj:
```
{
type: 'line',
data: {
labels: ['11:00', '12:00', '13:00', '14:00', '15:00'],
datasets: [{
data: [23, 45, 56, 44, 47],
label: "users online",
fill: false
}
]
},
To część mojego kodu, który tworzy wykres. Chciałbym, aby przedstawiał 24 godzinny ruch na stronie. W **labels** podaje się godziny (co godzinę - max 24 godziny), a w **data** ilość osób online w tamtej godzinie. Jak się za to zabrać?
- Rejestracja:ponad 6 lat
- Ostatnio:6 dni
- Postów:296
To użyj offsetu, np. statystyki dla godzin od 12.00 do 23.00, czyli ostatnie 12 pozycji:
SELECT SUM(users), HOUR(TIME) AS sh
FROM pages_users
WHERE server_id = 1
GROUP BY sh
LIMIT 12
OFFSET 24-12
- Rejestracja:ponad 6 lat
- Ostatnio:6 dni
- Postów:296
Mogę się domyślać, że po północy nad ranem brak ruchu na stronach i brak wpisów do statystyk, stąd braki. Jeśli tak, to stwórz tabelę lub widok hours
i wygeneruj ciąg wszystkich godzin od 0 do 23 do kolumny hour
, i zrób "lewego joina":
select h.hour, stats.ucount
from hours h
LEFT join (select sum(users) as ucount, HOUR(time) as sh
from pages_users
group by sh) stats
on stats.sh = h.hour
order by h.hour
Dla brakujących godzin będzie tam NULL, więc sam pokombinuj jak zamienić to na zero. Teraz limit o offset będą działać tak jak trzeba, bo to zapytanie zawsze zwróci 24 wiersze.
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 6 lat
- Postów:14
Nie nie, źle mnie zrozumiałeś. Nie mam żadnych braków (ruch na stronie to tylko przykrywka, tak naprawdę zliczam coś innego). Wszystkie dane w bazie są prawidłowe. I też nie chodzi o brak wpisów do statystyk, lecz o grupowanie wyników po godzinie. Nie wyświetla mi wyników tak jak my to liczymy: 23:00, 00:00, 01:00, lecz wyświetla to w ten sposób: 00:00, 01:00, 23:00. Moje zapytanie aktualnie wygląda tak:
SELECT SUM(users), HOUR(TIME) AS sh FROM servers_users WHERE account_id = "'.$user['id'].'" GROUP BY sh LIMIT 24
- Rejestracja:ponad 6 lat
- Ostatnio:6 dni
- Postów:296
Chłopie, pisz jaśniej, bo tak to szkoda czasu. Ostania próba czytania w Twoich intencjach, chodzi o przedział godzinowy np. od 18 do 5? Jeśli tak, to zrób z klauzulą having i unionem :
select sum(users), HOUR(time) as sh
from servers_users
group by sh
having sh > 17
union
select sum(users) as hcount, HOUR(time) as sh
from servers_users
group by sh
having sh < 6
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 6 lat
- Postów:14
Wprawdzie do tego konkretnego przykładu, to zapytanie by się nadało po dodatkowym obliczaniu godzin. Jednak chciałbym je mieć uniwersalne, aby też przy innych wykresach je wykorzystać. Doceniam to, że mi pomagasz. Dzięki. Mimo wszystko, uważam jednak, że to nie jest czytanie w moich intencjach. Ogólnie w tym wątku wspomniałem co mnie dokładnie interesuje (a że wątek się trochę ciągnie to już inna kwestia).
Zbierając do kupy wszystkie informacje:
- To ma być wykres 24 godzinny
- Pokazywane mają być najświeższe dane
- Dane mają być prezentowane od aktualnej godziny do tej samej dnia wczorajszego. Teraz jest godzina 20 (nie licząc minut) i wykres ma pokazywać dane przez ostatnią dobę do wczoraj do godziny 20.
Przepraszam, że się wcześniej nie zrozumieliśmy. Mógłbym liczyć ostatni raz na pomoc? Bardzo mi na tym zależy.

- Rejestracja:prawie 17 lat
- Ostatnio:2 dni
- Postów:2792