Tomasz G.

Tomasz G. Informatyk

Temat: Hurtowe wstawianie daty i czasu do tabeli w MySQL.

Witam wszystkich. Mam problem z wstawieniem do tabeli hurtowo dat, czasu i identyfikatora zasobu. Hurtowo czyli chcę za jednym machnięciem do tabeli terminarz wprowadzić możliwe terminy do zarezerwowania. Wiem, że można to ręczenie zrobić, ale nie tędy droga. Dokładnie opiszę co chciałbym uzyskać. Chciałbym wstawić do tej tabeli na cały rok możliwe terminy do rezerwacji co dzień przy czym:
1. Od poniedziałku do piątku w godzinach 06:00 - 23:00.
2. W soboty i niedziele w godzinach od 08:00 - 19:00.
3. W święta terminu nie powinno być.
4. Interwał czasowy powinien trwać godzinę lub jej wielokrotność, ale z możliwością rezerwacji o pełnej i w połowie.
5. Liczba zasobów możliwych do rezerwacji to trzy, przy czym jednocześnie można zarezerwować jeden, dwa lub nawet trzy.

Czy ktoś ma jakiś pomysł jak wstawić te daty, czas i id_zasobu? Poza tym czy można zrobić to czystym SQL-em, czy raczej jakąś funkcją w PHP? Docelowo baza ma działać z PHP ale niestety w PHP jestem początkujący. Z góry dziękuję za sugestie :)
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: Hurtowe wstawianie daty i czasu do tabeli w MySQL.

zarys:
/*
create table _mm_gl
(
id int not null auto_increment primary key,
data date not null,
czas time not null,
zasob int null
)
*/
insert into _mm_gl(data, czas)
select dzien, godzina from (
select cast(date_add('2014-01-01', interval s*100+d*10+j day) as date) dzien from
(select 1 s union select 2 union select 3 union select 0) s,
(select 1 d union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 0) d,
(select 1 j union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 0) j
where s*100+d*10+j<365
) dni,
(
select cast(date_add('2014-01-01', interval 12*p+g hour) as time) godzina from
(select 1 p union select 0) p,
(select 1 g union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12) g
/* order by p,g */ /* EDYCJA: tu order niepotrzebny */
) godziny
where
(dayofweek(dzien) between 2 and 6 and godzina between '06:00:00' and '23:00:00')
or
(dayofweek(dzien) not between 2 and 6 and godzina between '08:00:00' and '19:00:00')
order by dzien, godzina
Ten post został edytowany przez Autora dnia 05.09.14 o godzinie 09:57
Tomasz G.

Tomasz G. Informatyk

Temat: Hurtowe wstawianie daty i czasu do tabeli w MySQL.

Wielkie dzięki za pomoc, wszystko poszło elegancko. Analizuję teraz dokładnie co ten skrypt robi, bo na przyszłość to się przyda :)
Jeszcze raz wielkie dzięki za pomoc.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

Następna dyskusja:

zmienna mysql jako nazwa ta...




Wyślij zaproszenie do