Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]obranie danych zawierających się w zakresie dat
eurosoft
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


Witam,
jak skonstruować zapytanie....:

tabela zawiera:

nazwa | data_od | data_do

chciałbym aby pokazane zostały rekordy gdzie dzisiejsza data zawiera się pomiędzy data_od a data_do, utrudnieniem jest to że
data_od oraz data_do ma wygląd MM.DD

Ten post edytował eurosoft 7.12.2010, 20:54:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blade-mrn
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Ale co mam ci napisać przecież wszystko już napisałem.
Pierwsza metoda:
W bazie danych masz np taką tabelę:
  1. CREATE TABLE `gatunek` (
  2. `id_gatunek` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` char(20) NOT NULL,
  4. `data_poczatkowa` char(5) NOT NULL,
  5. `data_koncowa` char(5) NOT NULL,
  6. PRIMARY KEY (`id_gatunek`)
  7. );

W skrypcie pobierasz wszystko z tabeli i po rozdzieleniu miesięcy i dni za pomocą podanych wcześniej przeze mnie funkcji porównujesz otrzymane wartości z bieżącą datą za pomocą zwykłej instrukcji warunkowej. Następnie jeśli warunek jest spełniony to wypisujesz co ci potrzeba na stronie a jeśli nie to nie robisz nic. Przypuszczam że nie jest to zbyt efektywna metoda bo wymaga pobrania całej tabeli i przelecenia przez wszystkie jej rekordy a do tego zwala całą robotę na PHP ale osobiście nie wiem jak to zrobić prościej.
W drugiej metodzie masz taką tabele:
  1. CREATE TABLE `gatunek` (
  2. `id_gatunek` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` char(20) NOT NULL,
  4. `miesiąc_poczatkowy` int(2) UNSIGNED NOT NULL,
  5. `dzien_poczatkowy` int(2) UNSIGNED NOT NULL,
  6. `miesiąc_koncowy` int(2) UNSIGNED NOT NULL,
  7. `dzienc_konicowy` int(2) UNSIGNED NOT NULL,
  8. PRIMARY KEY (`id_gatunek`)
  9. );

Przy zastosowaniu takiej tabeli możesz porównać kryteria bezpośrednio w zapytaniu SELECT i wybrać jedynie spełniające je elementy z tabeli. Więc to rozwiązanie powinno być efektywniejsze do pierwszego ale zapytanie do bazy będzie znacznie bardziej skomplikowane. Wybór należy do ciebie.
Go to the top of the page
+Quote Post

Posty w temacie
- eurosoft   [SQL]obranie danych zawierających się w zakresie dat   7.12.2010, 12:33:28
- - nospor   CytatPOBRANIE DANYCH Z TABELI WG ZAWIERAJĄCYCH SIĘ...   7.12.2010, 14:43:15
- - blade-mrn   Innym rozwiązaniem może być przechowywanie dat w f...   7.12.2010, 16:26:12
- - eurosoft   tabela zawiera nazwy zwierząt oraz ich okresy ochr...   7.12.2010, 20:53:42
- - blade-mrn   W takim wypadku chyba najprościej było by rozdziel...   7.12.2010, 21:49:14
- - eurosoft   a nie można poprzez wartość np '%' podawać...   7.12.2010, 22:09:22
- - thek   Ja bym podszedł do tego tak... Okresy ochronne maj...   7.12.2010, 22:55:09
- - eurosoft   Tak, uważam że jest to dobry pomysł, mogę prosić o...   8.12.2010, 09:27:17
- - thek   No nie do końca tak... Aby porównywać daty, musisz...   8.12.2010, 13:06:39
- - eurosoft   ustawienie daty w bazie wraz z rokiem będzie dość ...   8.12.2010, 16:59:32
- - blade-mrn   Możesz też przechowywać datę w bazie jako char np....   8.12.2010, 17:36:59
- - eurosoft   Czy możesz mi napisać dokładniej jak to skonstruow...   8.12.2010, 17:41:39
- - blade-mrn   Ale co mam ci napisać przecież wszystko już napisa...   8.12.2010, 17:59:52
- - eurosoft   czy takie rozwiązanie jest dobrym kierunkiem? [SQL...   8.12.2010, 19:14:02
- - blade-mrn   Jeśli zrobisz tą drugą proponowaną przeze mnie tab...   9.12.2010, 12:00:06
- - thek   A kto pisał, że daty graniczne są na sztywno z rok...   9.12.2010, 13:30:38
- - eurosoft   Dziekuję wszystkim którzy starali się pomóc, temat...   9.12.2010, 17:34:06


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: 24.08.2025 - 21:49