![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 5.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Od kilku dni mam zaćmę umysłową i nie potrafię zrobić prostej rzeczy, a mianowicie: Mam bazę danych : nazwisko | od | do kowalski 2011-03-03 2011-03-06 nowak 2011-03-06 2011-03-16 Mam formularz w którym wybieramy dwie daty (okres od - do). Interesuje mnie pytanie, które ustali mi kto w wybranym przez formularz okresie był na zwolnieniu. Np. jeśli wybiore od 1.03-20.03 to byli oboje a jeśli np. od 4.03 do 5.03 to był tylko kowalski. A z kolei od 4.03 do 07.03 to też byli oboje. No kombinowałem już na 20 sposobów i za grzyba nie idzie. albo wyskakuje jeden albo drugi albo oboje, ale zawsze jest błąd gdy zbiory dat się pokrywają. Sprawa jest banalna ale nie daje rady. Ogólnie stosowałem w pytaniu warunek
w różnych konfiguracjach, ale zawsze gdzieś źle pokazał. Pomocy, lub choć wskazówkę |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 781 Pomógł: 256 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 5.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzę jutro w robocie i dam znać, ale dzieki z góry.
@ kefirek WHERE od >= ".$_od'." AND od <= ".$_do." . Nie pomogło kurde Wybierając okres od 4.03-6.03. Wyświetla tylko jedną osobę, a w tym czasie byli oboje. 3.03 >= 04.03 AND 06.03 <= 6.03 Tego nie pokazuje Pomocy ! Ten post edytował 8_pasarzer_NOSTROMO 8.03.2011, 07:31:26 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że chcesz wybrać osoby, których urlop "przecina się" z okresem podanym w formularzu? Jeśli tak, to imho trzeba sprawdzić dwa warunki:
1. czy od lub do jest w przedziale podanym przez formularz 2. czy przedział podany przez formularz zawiera sie w od-do $_od = '2011-03-04'; $_do = '2011-03-06';
pisane z palca i nie testowane, mam nadzieję, że pomoże |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Doprecyzuj określenie "kto w wybranym przez formularz okresie był na zwolnieniu".
Możliwość 1: Kto przez cały podany okres był na zwolnieniu. Możliwość 2: Kto w dowolnym dniu podanego okresu był na zwolnieniu. Skoro piszesz "od 4.03 do 07.03 to też byli oboje" a Nowak był na zwolnieniu od 6.03, to raczej wariant 2, ale chciałbym się upewnić. Rozwiązanie Kefirka wyciągnie tylko tych, którzy "w żadną stronę nie wystawiali" poza podany okres. Rozwiązanie Wojtka_B (wygląda na dobre) obejmuje 3 możliwości: - od <= $_od AND do >= $_do - tych którzy "wzięli okrakiem" podany okres (zaczęli wcześniej lub w dniu pocz., a skończyli później lub w dniu końcowym) - od BETWEEN $_od AND $_do - zaczęli w podanym okresie (koniec - nieważny), - do BETWEEN $_od AND $_do - skończyli w podanym okresie (początek - nieważny). Ten post edytował Valdi_B 8.03.2011, 11:13:23 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 5.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
@ wojciech_b
Dzięki wielkie, jesteś wielki ! Działa jak złoto. Podaje prawidłowy kod dla potomnych:
Wciskam pomógł bez wahania. @ Valdi_b wojciech_b mnie dobrze zrozumiał, chodziło mi o okresy przecinające się w datach jakie wybierasz w formularzu. Jeszcze raz dziękuje wszystkim za pomoc, w tak błahej sprawie. Ten post edytował 8_pasarzer_NOSTROMO 8.03.2011, 11:09:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:03 |