Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pregled slobodnih datuma

[es] :: MySQL :: Pregled slobodnih datuma

[ Pregleda: 361 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bloker
R. Srpska

Član broj: 79958
Poruke: 215
89.111.238.*



+3 Profil

icon Pregled slobodnih datuma08.07.2019. u 11:16 - pre 7 meseci
Pozdrav,

Kreirao sam aplikaciju za rezervaciju događaja i u bazi, pored ostalih polja, imam i datum rezervacije..
Potreban mi je izvještaj slobodnih datuma za određeni dan u sedmici (ponedeljak, utorak...) za određeni period.
Tj. za uneseni period od 01.06.2019. do 30.06.2019. i odabran dan Subota bi recimo trebalo da dobijem da su mi slobodni 15.06.2019 i 22.06.2019, dok su mi 1. 8. i 29. zauzeti..

Imam dvije ideje za rješavanje ovog problema, ali ni jedna mi nije "elegantna"
1. ideja:
Da kreiram tabelu "kalendar" sa poljima "datum" i "dan" i da tu unesem sve datume za narednih 10-20 godina i svakom datumu da dodam koji je dan u sedmici (1-ponedeljak, 2-utorak, .. )
I prilikom pretrage da selektujem sve datume za određeni period koji padaju u selektovan dan i onda ti datumi NOT IN u tabeli "dogadjaji"

2. ideja:
da kreiram for petlju za odabrani period i da idem jedan po jedan dan i provjeravam da li je taj dan recimo "subota" i ako jeste onda provjerava da li postoji nešto sa tim datumom već rezervisano..


Mislim da će prva ideja dosta brže raditi, ali morao bih onda da popunim tabelu kalendar sa bar 10 godina unaprijed..


Najbolje rješenje bi bilo kada bih mogao u jednom upitu da dobijem sve "rupe" u tabeli "dogadjaji" za određeni period i selektovan "dan"

Hvala unaprijed.
 
Odgovor na temu

Deunan

Član broj: 338178
Poruke: 56
*.dynamic.isp.telekom.rs.



+13 Profil

icon Re: Pregled slobodnih datuma08.07.2019. u 11:55 - pre 7 meseci
Mozes da izvuces sve zauzete termine za neki dan u tom periodu, pa ih u kalendaru ugasi:
Code:

SELECT termin, DAYOFWEEK(termin) as dan FROM termini WHERE (termin BETWEEN '2019-01-30' AND '2019-09-29') HAVING dan = 6

U mysql-u datum pocinje od nedelje (1). 6 je, recimo, petak.




[Ovu poruku je menjao Deunan dana 08.07.2019. u 13:15 GMT+1]
 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 215
89.111.238.*



+3 Profil

icon Re: Pregled slobodnih datuma08.07.2019. u 13:57 - pre 7 meseci
Ok, ovim upitom mogu da dobijem sve subote koje su zauzete u 6. mjesecu..

Code:
SELECT * FROM dogadjaji WHERE datum>="2019-06-01" AND datum<="2019-06-30" AND DAYOFWEEK(datum)=7


Da li postoji način da bez kreiranja dodatne tabele sa svim datumima i danima u mjesecu dobijem slobodne datume?
Tj. samo na osnovu ove tabele "dogadjaji" da dobijem informaciju o slobodnim terminima?
 
Odgovor na temu

Deunan

Član broj: 338178
Poruke: 56
*.dynamic.isp.telekom.rs.



+13 Profil

icon Re: Pregled slobodnih datuma08.07.2019. u 14:52 - pre 7 meseci
Samo ovako nesto:
Code:

select a.datum
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY  as datum
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d
) a LEFT JOIN dogadjaji ON a.datum = dogadjaji.datum
where a.datum between '2019-06-01' and '2019-06-24' and DAYOFWEEK(a.datum)=7 and dogadjaji.datum IS NULL


Nije bas "elegantno", ali radi...

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+708 Profil

icon Re: Pregled slobodnih datuma11.07.2019. u 11:19 - pre 7 meseci
@bloker: Prva ideja ti je bila dobra, to je standardno rešenje za mnoge datumske probleme. Datum tabela i to je to.
 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 215
89.111.238.*



+3 Profil

icon Re: Pregled slobodnih datuma12.07.2019. u 13:55 - pre 7 meseci
@jablan
Tako sam na kraju i odradio, mislio sam da mysql ima neko elegantnije rješenje bez kreiranja dodatne tabele sa datumima..

@Deunan
Našao sam i ja ovaj upit negdje na internetu, ali iskreno bio mi je nešto komplikovan nisam uspio da skontam kako radi.. tako da sam se vratio prvoj opciji..

Hvala svima na pomoći
 
Odgovor na temu

[es] :: MySQL :: Pregled slobodnih datuma

[ Pregleda: 361 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.