Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Różnica nowszego rekordu ze starszym
eximius7
post 17.05.2017, 13:19:41
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.12.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post 17.05.2017, 13:40:57
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
javafxdev
post 17.05.2017, 20:21:07
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

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


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?

Go to the top of the page
+Quote Post
nospor
post 17.05.2017, 20:37:16
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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

Mimo wszystko warto by jednak poprawic strukture bazy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
javafxdev
post 17.05.2017, 20:49:28
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

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


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ś.
Go to the top of the page
+Quote Post
nospor
post 17.05.2017, 21:00:23
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Obawiam sie jednak, ze tego nie wymyslil zadnego wykladowca. Az tak kiepskich chyba nie ma wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 25.04.2024 - 00:23