Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pytanie o daty
b2n
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 25.08.2004

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


Mam takowe pytanie mamy pole w bazie które wygląda następująco:

01.09.2005|02.02.2006|12.02.2006|22.06.2006

i teraz tak pierwsze dwie daty to jakby jeden przedział a drugie dwie to kolejny przedziałów moze byc jakis 4 max

i teraz chodzi o to ze jak sprawdzic czy dana data np. 05.10.2005 miesci sie w którymś z przedziałów oczywiscie jesli sie nie miesci to zwraca FALSE

szukałem ale nie moglem zlaleźć odpowiedniego pomysłu będę wdzieczny za rade
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Oj, ja bym ci propnowal to jedno pole rozbić na cztery. W każdym polu bylaby jedna data. Wtedy bez żadnych kombinacji alpejskich dałoby się wyprodukować interesujące cie zapytanie


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

"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
b2n
post
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 25.08.2004

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


tak też brałem to pod uwage ale wtedy jesli przedziałów bedzie 4 a jak bedzie nagle trzeba 5 a jak bedzie to tak to mozna spokojniej chyba ?

bardzo bym prosił o jakis pomysł przy tym rozwiązaniu no chyba że uwazacie ze naprawde lepiej bedzie zrobic np 10 pól na takie daty i tedy 5 przedziałów mozna max
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Dodaj drugą tabelę przedziały z polami: id_pola_z_tabeli_glownej, przedzial_od, przedzial_do.
I wtedy możesz mieć dowolną ilość wpisów z przedziałami dla , np. id = 3.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To skoro liczba przedialow moze byc rożna danego rekordu to propunuję ci taką strukturę:

Cytat
tabela1
---------
id - id rekordu
inne dane - pozostale dane

tabela2
--------
id_tabela1 - klucz obcy do tabela1
data1 - pocztek przedzialu
data2 - koniec przedialu


w ten sposob jesli jakis rekord z tabela1 ma miec przedzialy, to dodajesz te przedaily do tabela2 dodając równiez id z tabela1 dzieki czemu bedziesz wiedzial jaki przedzial jest do jakiego reekordu z tabela1. w ten sposób możesz dawać dowolną liczbę przedzialow

edit: @kszychu byles szybszy, ale nia kasuje mojego bo jest bardziej opisany


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

"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
b2n
post
Post #6





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 25.08.2004

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


to moze od drugiej strony w tej chwili jest tak

1. tabela szkoły do której jest dopsiane jakies ID z tabeli strafa
2. w tabeili strefa sa pola ID | WOJEWÓDZTWO | DATY

gdzie id z tabeli strefa jest zapisaene w kolumnie strefa w tabeli szkoły

Strefy to semestry i teraz jakaś szkoła moze miec 3 semstry a inna moze miec 2 semestry i to w róznych przedziałach czasowych i po podaniu daty "dzisiejszej" chodzi o sprawdzenie czy któraś strafa jest w tym przedziale.

Ew. jak waszym zdaniem to zaprojektowac efektywnie

Robert

ps. no jakos moja wypowiedz poszła pod wszystkimi w tym samym czasie pisalismy

Ten post edytował b2n 3.08.2005, 11:25:39
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zaprojketować tak jak mowilismy:
Cytat
strefa
---------
id - id rekordu
inne dane - pozostale dane

daty
--------
id_strefa - klucz obcy do strefa
data1 - pocztek przedzialu
data2 - koniec przedialu


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

"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
b2n
post
Post #8





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 25.08.2004

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


oki więc hipotetycznie zakładając że moja tabela wyglada tak jak zaporoponowales

wyciagamy np pierwszy rekod z bazy i dwie daty

1.09.2005 02.02.2006 // to jest jakis tam rekord

i teraz mamy 05.10.2005 //data dzisiejsza

hmm i szczerze powiem nie wiem jak to "ugrźć" i sprawdzić czy ta dziesiejsza data miesci się miedzy tą i tą ;-)

Robert
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2.  
  3. $sql=&#092;"select distinct sz.ID from szkola sz, strefa s, daty d 
  4. where sz.id_strefa = s.id and d.id_strefa=s.id and '$today'>=d.data1 and '$today'<=d.data2&#092;" ;
  5.  
  6. ?>
$today to data któa cię interesuje

a tak na marginesie ja też mam na imię Robert biggrin.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
b2n
post
Post #10





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 25.08.2004

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


czyli dekakto musze miec w tym wypadku 3 tabele

1. szkoły z kolumna - strafa
2. strefy i z kolmna id która odnosi sie do szkoly.strefa
3. datay i gdzie mam kolumne powiedzmy strefa które odnosi się do strefa.id

to tak chyba duzo tego ? my sie wydaje

Robert
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




w zasadzie to tabela strewfa jest nieporzebna. Tabela daty może odwolywac sie bezposrednio do szkola. Zaraz wytsle ci info na gg to możę to dopracujemy. odbierz. w tej chwili jests nie dostewpny

edit (dla potomnych)
po dlugich i zażartych dyskusjach na gg ustaliliśmy taką oto strukturę:
Cytat
tabela szkola
-----------------
id
inne dane

tabela daty
---------
id_szkola
data_pocz
data_koniec

zapytanie:
  1. <?php
  2.  
  3. $sql=&#092;"select distinct sz.id from szkola sz, daty d 
  4. where d.id_szkola=sz.id and '$today'>=d.data_pocz and '$today'<=d.data_koniec&#092;";
  5.  
  6. ?>


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

"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 Aktualny czas: 19.08.2025 - 15:22