Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql]Wybieranie rekordów z zakresu timestamp
dado
post
Post #1





Grupa: Zarejestrowani
Postów: 194
Pomógł: 2
Dołączył: 12.04.2004
Skąd: Częstochowa

Ostrzeżenie: (10%)
X----


Witam. Męczę sie już kilka dni z pewnym zapytaniem.
Robię kalendarz wydarzeń i mam problem z wybieraniem wydarzeń do kalendarza. Zapytanie ma wybrać wszystkie zdarzenia które zaczynają się, trwają lub kończą w podanym czasie widełek daty. Niestety zapytanie wybiera tylko te rekordy które albo zaczynają się albo kończą w podanych widełkach ale nie wybiera tych które trwają w podanych widełkach choć mogą się zaczynać wcześniej lub kończyć później

  1. SELECT
  2. a.task_id,
  3. a.task_name,
  4. a.task_start,
  5. a.task_end,
  6. a.task_status,
  7. a.user_id,
  8. b.user_name,
  9. b.user_type_id,
  10. c.task_id AS task_invite
  11. FROM
  12. cal_task a
  13. JOIN
  14. cal_users b ON(a.user_id=b.user_id)
  15. LEFT JOIN
  16. cal_task_merge_users c ON(a.task_id = c.task_id)
  17. WHERE(
  18. a.task_start_date BETWEEN '".date("Y-m-d H:i:s", $start)."' AND '".date("Y-m-d H:i:s", $end)."'
  19. )
  20. GROUP BY
  21. a.task_id
  22. ORDER BY
  23. a.task_start ASC
  24. ;


struktura tabeli głównej
  1. Pełny tekst task_id user_id enterprise_id task_status task_start task_end task_start_date task_end_date task_name task_descr task_note task_buynote


Ten post edytował dado 18.08.2011, 18:15:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dado
post
Post #2





Grupa: Zarejestrowani
Postów: 194
Pomógł: 2
Dołączył: 12.04.2004
Skąd: Częstochowa

Ostrzeżenie: (10%)
X----


czyli już sam blok WHERE czy to będzie tak?
  1. WHERE
  2. (
  3. a.task_start BETWEEN $start AND $end
  4. )
  5. OR
  6. (
  7. a.task_end BETWEEN $start AND $end
  8. )
  9. OR
  10. (
  11. a.task_start < $start
  12. AND
  13. a.task_end > $end
  14. )






Oki zadziałało wyśmienicie dodałem jeszcze w select klauzule pozwalające stwierdzić z którego ora zapytanie skorzystało przy danym rekordzie, wklejam dla tych co kiedys będą tracić godziny przy tym
  1. SELECT
  2. a.task_id,
  3. a.task_name,
  4. a.task_start,
  5. a.task_end,
  6. a.task_status,
  7. a.user_id,
  8. b.user_name,
  9. b.user_type_id,
  10. c.task_id AS task_invite,
  11. IF(
  12. (a.task_start_date BETWEEN '".date("Y-m-d H:i:s", $start)."' AND '".date("Y-m-d H:i:s", $end)."'), 1, 0
  13. ) AS w1,
  14. IF(
  15. (a.task_end_date BETWEEN '".date("Y-m-d H:i:s", $start)."' AND '".date("Y-m-d H:i:s", $end)."'), 1, 0
  16. ) AS w2,
  17. IF(
  18. (a.task_start < ".$start." AND a.task_end > ".$end."), 1, 0
  19. ) AS w3
  20. FROM
  21. cal_task a
  22. JOIN
  23. cal_users b ON(a.user_id=b.user_id)
  24. LEFT JOIN
  25. cal_task_merge_users c ON(a.task_id = c.task_id)
  26. WHERE(
  27. a.task_start_date BETWEEN '".date("Y-m-d H:i:s", $start)."' AND '".date("Y-m-d H:i:s", $end)."'
  28. )
  29. OR(
  30. a.task_end_date BETWEEN '".date("Y-m-d H:i:s", $start)."' AND '".date("Y-m-d H:i:s", $end)."'
  31. )
  32. OR(
  33. a.task_start < ".$start."
  34. AND
  35. a.task_end > ".$end."
  36. )
  37. AND(
  38. a.user_id = '".session::get('KEY')."'
  39. OR
  40. c.user_id = '".session::get('KEY')."'
  41. OR
  42. b.user_type_id > '".session::get('type_id')."'
  43. )
  44. GROUP BY
  45. a.task_id
  46. ORDER BY
  47. a.task_start ASC


Ten post edytował dado 19.08.2011, 07:58:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 17:43