• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL; Wyciąganie rekordów z konkretnego okresu + rekordów sąsiednich

Object Storage Arubacloud
0 głosów
583 wizyt
pytanie zadane 14 grudnia 2017 w SQL, bazy danych przez MiguelSantos Początkujący (270 p.)

Witam wszystkich Pasjonatów,

mam zagwozdkę ze skonstruowaniem zapytania które zwróci mi rekordy z konkretnego okresu + graniczący (poprzedzający) z nimi, chodzi o taki przykład, mam rekordy w tabeli takie jak:

 

(1, 0.00, '2017-01-01'),
(2, 120.30, '2017-01-28'),
(3, 220.00, '2017-02-20'),
(4, 380.20, '2017-03-10'),
(5, 588.09, '2017-04-16'),
(6, 670.04, '2017-05-13'),
(7, 920.24, '2017-06-01'),
(8, 1200.01, '2017-07-10'),

I chcę wyciągnąć wszystko z okresu jaki użytkownik określił w formularzu, używam do tego:

SELECT * FROM nazwa_mojej_tabeli WHERE data > '".$date1."' AND data < '".$date2."'

Ale chciałbym jeszcze rekord poprzedzający ten przesłany przez $date1 

Zatem zgodnie z moimi rekordami, ktoś wybiera okres od 2017-05-05 do 2017-07-30  -  chcę żeby mi łącznie pobrało:

(5, 588.09, '2017-04-16'),
(6, 670.04, '2017-05-13'),
(7, 920.24, '2017-06-01'),
(8, 1200.01, '2017-07-10'),

Co powinienem "dokleić" do mojego zapytania żeby pobierało również ten jeden element więcej?

Pozdrawiam :)

 

 

komentarz 18 grudnia 2017 przez efiku Szeryf (75,160 p.)
Zadziwiająco podobne do tego https://forum.pasja-informatyki.pl/17731/challenge-php-sprawdz-swoje-mozliwosci ;)

Czy to zadanie rekrutacyjne ? :P (Może lepiej nie odpowiadaj. )
komentarz 19 grudnia 2017 przez MiguelSantos Początkujący (270 p.)
:D Dokładnie mierze się właśnie z tym zadaniem - tylko i wyłącznie w celu samokształcenia :)

1 odpowiedź

0 głosów
odpowiedź 15 grudnia 2017 przez robRoy Użytkownik (970 p.)

Rozwiązanie nie jest elegancjie i na pewno można to zrobić lepiej, ale jeśli na szybko potrzebujesz to u mnie zadziałało to:

SELECT * FROM nazwa_mojej_tabeli 
WHERE data > '".$date1."' AND data < '".$date2."' 
OR data=(SELECT data FROM nazwa_mojej_tabeli 
WHERE data < '".$date1."' ORDER BY data DESC LIMIT 1);

Czyli to co jest po OR wyszukuje i dodaje ten jeden element.

komentarz 18 grudnia 2017 przez MiguelSantos Początkujący (270 p.)
Rzeczywiście, działa, dziękuję ;)

Podobne pytania

0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 8 kwietnia 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
+1 głos
1 odpowiedź 197 wizyt
pytanie zadane 8 października 2020 w SQL, bazy danych przez Mateusz Kita Początkujący (380 p.)
0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 11 lutego 2022 w SQL, bazy danych przez angor10 Nowicjusz (120 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...