Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Różnica nowszego rekordu ze starszym
Forum PHP.pl > Forum > Bazy danych > MySQL
eximius7
Witam,
mam taką tabelę:
ID Wyświetlenia Data
1 355 14.05.2017 16:39
2 360 15.05.2017 23:44
3 367 16.05.2017 10:44
4 367 16.05.2017 11:23
5 367 16.05.2017 12:49
6 368 16.05.2017 19:57
7 370 17.05.2017 09:52
8 370 17.05.2017 10:54
9 370 17.05.2017 12:00
10 370 17.05.2017 13:05
Jak za pomocą SQL uzyskać liczbę wyświetleń z danego dnia? Do tej pory robiłem tak:
  1. SELECT max(wyswietlen) - min(wyswietlen) AS wyswietlenia FROM blog GROUP BY date(DATA);
lecz niestety w dn. 14.05 i 15.05 pokazuje 0 bo jest dodany tylko jeden rekord w tych dniach. Dodatkowo to zapytanie "gubi" 2 wyświetlenia w nocy pomiędzy 16.05 a 17.05.
Bardzo proszę o pomoc jak to zrobić w SQL by zapytanie zwracało poprawne wartości.
nospor
Cytat
pokazuje 0 bo jest dodany tylko jeden rekord w tych dniach.
Ty generujesz te tabele? Przeciez ona nie ma najmniejszego sensu.
Po co kilka razy zapisujesz w ciagu dnia liczbe wyswietlen i na dodatek wynika z tego, ze zapisujesz tam liczbe wszystkich wyswietlen do danego czasu. Czemu poprostu nie zapisujesz tam jednego rekordu z faktyczna liczba wyswietlen na dany dzien? Albo czemu nie zapisujesz tam faktycznych wejsc/wyswietlen?
javafxdev
Wiadomo, że te tabele nie mają sensu, bo to jest jakieś szkolne ćwiczenie, ale warto spróbować wink.gif
Tabela show:
  1. id int(11) NO PRI AUTO_INCREMENT
  2. wyswietlenia int(11) YES
  3. DATA datetime YES


Zapytanie:

  1. SELECT s1.d1, ifnull(s1.w - s2.w, s1.w) FROM (
  2. SELECT date(DATA) AS d1, max(wyswietlenia) AS w FROM `show` s1 GROUP BY date(DATA) ) AS s1
  3. LEFT JOIN (
  4. SELECT date(DATA) AS d1, max(wyswietlenia) AS w FROM `show` s1 GROUP BY date(DATA) ) AS s2 ON date(s1.d1) = date(s2.d1) + 1 ORDER BY s1.d1;


Wynik zapytania:
  1. 2017-05-14 355
  2. 2017-05-15 5
  3. 2017-05-16 8
  4. 2017-05-17 2


Wygląda OK?

nospor
I jak zwykle do najwydajnieszych nie nalezy. No ale przeciez dziala... tongue.gif

Mimo wszystko warto by jednak poprawic strukture bazy
javafxdev
Obok wydajności to nawet nie stało wink.gif

W szkolnych projektach jak tam będzie z 10k rekordów to będzie hulać aż miło, a przecież nikt tego nie zastosuje w produkcyjnych rozwiązaniach tak jak pisałeś.
nospor
Obawiam sie jednak, ze tego nie wymyslil zadnego wykladowca. Az tak kiepskich chyba nie ma wink.gif
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.