Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Problem z doborem odpowiedniego kodu..
Forum PHP.pl > Forum > Bazy danych > MySQL
hddkill
Witam, z racji tego, że to mój pierwszy post, chciałem napisać, iż rzadko zdarza mi się pisać na forach zazwyczaj kożystam z instniejących już tematów oraz manuali lecz teraz przyszedł czas gdy moja wiedza oraz możliwości nie są aż tak wielkie by rozwiązać mój problem.. Do rzeczy:
otóż mam sobie bazę danych i w niej jedną tabelę, tabela zawiera następujące kolumny:
id, lokal, cykliczna, wojewodztwo, miasto, kod_pocztowy, ulica, telefon, data, opis, link

W w/w tabeli mają być wpisywane imprezy w danym lokalu, problemem dla mnie jest napisanie kodu, który będzie sprawdzał czy data jest dzisiejsza i czy impreza jest cykliczna, a jeśli oba warunki są spełnione wtedy wpisuje do tabeli 4 rekordy i w każdym z tych rekordów data jest większa o jeden tydzień... Próbowałem takiego kodu:
CODE
INSERT INTO gdzie (cykliczna, lokal, wojewodztwo, miasto, data, kod_pocztowy, ulica, telefon, opis, link, banner)
SELECT cykliczna, lokal, wojewodztwo, miasto, DATE_ADD(data,INTERVAL 14 DAY),
kod_pocztowy, ulica, telefon, opis, link, banner FROM gdzie WHERE cykliczna=1 AND data=CURDATE();
INSERT INTO gdzie (cykliczna, lokal, wojewodztwo, miasto, data, kod_pocztowy, ulica, telefon, opis, link, banner)
SELECT cykliczna, lokal, wojewodztwo, miasto, DATE_ADD(data,INTERVAL 21 DAY),
kod_pocztowy, ulica, telefon, opis, link, banner FROM gdzie WHERE cykliczna=1 AND data=CURDATE();
INSERT INTO gdzie (cykliczna, lokal, wojewodztwo, miasto, data, kod_pocztowy, ulica, telefon, opis, link, banner)
SELECT cykliczna, lokal, wojewodztwo, miasto, DATE_ADD(data,INTERVAL 28 DAY),
kod_pocztowy, ulica, telefon, opis, link, banner FROM gdzie WHERE cykliczna=1 AND data=CURDATE();
UPDATE gdzie SET data=DATE_ADD(data,INTERVAL 7 DAY) WHERE cykliczna=1 AND data=CURDATE();

Lecz ten kod ten nie spełnia zadania bo tworzy duplikaty dat dla danego lokalu, nie moge też utworzyć unique index dla kolumny data bo np. mogą być lokale, w których imprezy odbywają się w ten sam dzień.
Dodam jeszcze, że koniecznie chciałbym to mieć w postaci mysql, jeśli ktoś miałby jakiś pomysł i chciałby się podzielić ze mną to z góry dziękuje !
Mruss
Jak dla mnie brakuje kilku informacji:
1) przy jakiej okazji będzie wyciągana informacja o tym czy impreza jest cykliczna,
2) dlaczego chcesz dodawać 4 rekordy skoro wiadomo, że impreza jest cykliczna a interwał to 7 dni przez kolejne 4 tygodnie.

Wydaje mi się, że jeśli już mamy informację z bazy o imprezie z zapisaną datą początkową to wystarczy sprawdzić obecną datę i w phpie wyrzucić w odniesieniu do dzisiaj ile jeszcze tygodni możemy się na tą imprezę załapać.

Może być tak, że nie do końca rozumiem do czego potrzebujesz takiego rozwiązania, ale może być też tak, że nie do końca przemyślałeś problem. aaevil.gif
hddkill
Cytat(Mruss @ 16.01.2010, 21:43:25 ) *
Jak dla mnie brakuje kilku informacji:
1) przy jakiej okazji będzie wyciągana informacja o tym czy impreza jest cykliczna,
2) dlaczego chcesz dodawać 4 rekordy skoro wiadomo, że impreza jest cykliczna a interwał to 7 dni przez kolejne 4 tygodnie.

Wydaje mi się, że jeśli już mamy informację z bazy o imprezie z zapisaną datą początkową to wystarczy sprawdzić obecną datę i w phpie wyrzucić w odniesieniu do dzisiaj ile jeszcze tygodni możemy się na tą imprezę załapać.

Może być tak, że nie do końca rozumiem do czego potrzebujesz takiego rozwiązania, ale może być też tak, że nie do końca przemyślałeś problem. aaevil.gif


1) Ja będe wpisywał(ręcznie) do bazy impreze i zarazem bede wiedział, że jest ona cykliczna, chodzi mi o zautomatyzowanie kodu ponieważ przy większej ilości imprez dodawanie 4 rekordów na każdy miesiąc mija się z celem
2) Motyw jest taki, że w PHP to jedynie moge wywowłać zapytanie, taki mam nakaz odgórny od 'dziwnego Pana z uczelni'

Wiem, że zadanie to jest dziwne ale niestety musze coś wykombinować..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.