Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie według godzin otwarcia
Forum PHP.pl > Forum > PHP
piotr485
Mam firmy w tabeli. [id, nazwa_firmy]
Posiadają one godziny otwarcia w osobnej tabeli. (id_firmy, id_dzien, od, do)

Chciałbym sortować zaczynając od firm które mają najwięcej czasu do zamknięcia a potem firmy które mają najmniej czasu do otwarcia. Nie mam pojecia jak to rozgryźć i jeszcze jak mi dojdzie tabela wyjatkow, zastanawiam sie czy jest to mozliwe do skonstruowania z poziomu zapytania czy raczej powinienem kombinować to zrobić najpierw za pomocą skryptu php ?
modern-web
W jakim formacie zapisane masz godziny? Problem wydaje się być prosty do rozwiązania smile.gif
piotr485
Cytat(modern-web @ 18.10.2012, 20:12:55 ) *
W jakim formacie zapisane masz godziny? Problem wydaje się być prosty do rozwiązania smile.gif


w formacie "10:30:00"
CuteOne
  1. SELECT
  2. p.id
  3. FROM
  4. sklep AS s
  5. LEFT JOIN produkt AS p ON (p.id_sklep = s.id_sklep)
  6. WHERE
  7. s.id_sklep > 5
  8. ORDER BY p.id DESC, s.id_sklep ASC


Mam nadzieję, że załapiesz o co chodzi - a jak nie to odsyłam do googla pod hasłami "mysql ORDER BY" i "mysql JOIN"
Noidea
Potrzebujesz trzy informacje na temat każdej firmy:
1. Czy firma jest aktualnie otwarta (czyli czy aktualny czas mieści się pomiędzy wartościami OD i DO dla danego dnia)
2. Czas do zamknięcia (różnica pomiędzy DO a aktualnym czasem)
3. Czas do otwarcia (różnica pomiędzy północą a aktualnym czasem + różnica pomiędzy OD a północą + 24h za każdy pełen dzień w którym firma nie pracuje, np. jeśli aktualnie jest piątek 20:00, a firma będzie otwarta w poniedziałek o 6:00, to ma ci wyjść: 4h + 2*24h + 6h) – ten punkt prawdopodobnie będzie najtrudniej napisać

Następnie dla otwartych firm sortujesz po wartości wyliczonej w punkcie 2., a dla zamkniętych po wartości wyliczonej w punkcie 3. (używając w tym celu konstrukcji CASE w ORDER BY)
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.