Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie SQL
Pabblo
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 30.03.2009

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


Wiam!

Potrzebuje stworzycz takie zapytanie ktore by zwrocilo wyniki pomiarow z danego dnia z bazy ale co wazne nie wszytskie tylko te co 30min. Chodzi poprostu o to zeby zmiejszyc ilosc wyswietlonych wynikow z calego dnia bo jest ich od groma. Za info z gory dzieki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


date >= date_sub interval 30 minut

Ten post edytował skowron-line 29.01.2013, 14:42:40
Go to the top of the page
+Quote Post
Pabblo
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 30.03.2009

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


witam stworzylem takie zapytanie ale niestety nie dziala jak powinno:

SELECT czas, data, objetosc, przeplyw FROM woda WHERE data >= DATE_SUB(CURDATE(), INTERVAL 30 minute)

Zapytanie to powinno wyswietlic wyniki z ,czas, co 30 min posortowane od najmnieszego do najwekszego wyniku danego/aktualnego dnia. Ponizej mamy czesc tego co wyswietla: (bardzo prosze o pomoc za co z gory dziekuje)

czas data objetosc przeplyw
00:10:56 2013-01-30 1205541 0
00:08:49 2013-01-30 592636 2000
00:09:23 2013-01-30 35670 0
00:09:47 2013-01-30 187331 400
00:09:45 2013-01-30 528564 0
00:09:14 2013-01-30 364930 0
00:09:27 2013-01-30 69308 200
00:10:07 2013-01-30 130563 9000
00:10:29 2013-01-30 293682 2000
00:10:46 2013-01-30 521431 0
00:10:30 2013-01-30 5389 0
00:09:57 2013-01-30 1136377 0
00:10:03 2013-01-30 407954 1200
00:10:08 2013-01-30 113921 200
00:09:22 2013-01-30 62413 300
00:08:48 2013-01-30 119595 4000
00:09:36 2013-01-30 211630 0
00:10:26 2013-01-30 334386 200
00:10:17 2013-01-30 426686 900

Ten post edytował Pabblo 30.01.2013, 08:19:07
Go to the top of the page
+Quote Post
styryl
post
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


A tak?
  1. SELECT czas, DATA, objetosc, przeplyw FROM woda WHERE DATA BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())
Go to the top of the page
+Quote Post
Pabblo
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 30.03.2009

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


niestety to zapytanie nie wyswietla zadnych wynikow moze iktos ma inna koncepcje bo ja sie czuje mocno bezsilny...

Ten post edytował Pabblo 30.01.2013, 10:27:36
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Gdyby wyniki były zapisywane w jednakowych odstępach czasu (na przykładowych danych widać, że nie są), to nie byłoby problemu:
  1. SELECT `w`.`czas`, `w`.`data`, `w`.`objetosc`, `w`.`przeplyw` FROM `woda` `w` WHERE `w`.`data` = '2013-01-30' AND TIME_TO_SEC(`w`.`czas`) % 1800 = 0 ORDER BY `w`.`czas` ASC

Na chwilę obecną powinieneś mieć 21.

Jeżeli dane nie są zapisywane w jednakowych odstępach czasu, to rozwiązanie problemu może okazać się wręcz niemożliwe, albo niewydajne, przynajmniej po stronie bazy danych.

Alternatywnie możesz spróbować pobrać np. co 5 rekord.
Go to the top of the page
+Quote Post
Pabblo
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 30.03.2009

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


Witaj dziekuje za odpowiedz. W zapytaniu ktore przedstawiles przypuszczam, ze odwolanie do bazy odnosi sie do konkretnej wartosci czasu tj np. 4:30.00 5:00:00 5:30.00 itp. Zapytanie nie uwzgledna wartosci zapisanych w innych wymiarach czasu co za tym idze znalazl mi tylko jeden wynik podczas gdy pomiarow jest setki ... czy mozna to jakos obejsc ?
Go to the top of the page
+Quote Post
styryl
post
Post #8





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


A może taki potworek

  1. SELECT
  2. objetosc,
  3. czas,
  4. CASE
  5. WHEN
  6. MINUTE(czas) >=30
  7. THEN
  8. CONCAT(HOUR(czas),":30:00")
  9. ELSE
  10. CONCAT(HOUR(czas),":00:00")
  11. END
  12. AS fixedtime
  13. FROM
  14.  
  15. woda
  16.  
  17. GROUP BY fixedtime
  18.  
  19. ORDER BY czas ASC
Go to the top of the page
+Quote Post
Pabblo
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 30.03.2009

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


dzieki piekne...dziala super tylko sa jeszcze dwie kwestie, czy da sie to zapytanie zapisac tak aby wyrzucalo tylko wyniki z aktualnego dnia (curdate()) ? i czy da sie zrobic tak by nie wyswietlala sie tabela 'fixedtime' bo aktualnie wyglada to tak:

data objetosc czas fixedtime
2012-01-01 152441 00:07:10 0:00:00
2012-01-01 495754 00:30:31 0:30:00
2012-01-01 1791802 01:00:01 1:00:00
2012-01-01 495779 01:33:18 1:30:00
2012-01-01 495789 02:04:34 2:00:00
2012-01-01 388174 02:30:46 2:30:00
2012-01-01 495806 03:07:05 3:00:00
2012-01-01 152534 03:31:34 3:30:00
2012-01-01 70065 04:00:28 4:00:00

witam z data juz sobie poradzilem wystarczylo wrzucic polecenie WHERE data = CURDATE()...natomiast nie wiem jak ukryc kolumne fixedtime bardzo prosze o pomoc za co z gory dziekuje
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 7.10.2025 - 14:59