Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[MYSQL] Skomplikowane zapytanie mysql

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[MYSQL] Skomplikowane zapytanie mysql

Post 20.08.2018, 12:18:26

Witam, nie jestem mistrzem mysql'a i próbuję od dobrych kilku dni stworzyć zapytanie, które pozwoli mi na wykonanie pewnej operacji:

Mam tabele:
    users:
      - id
      - name
    meetings:
      - teacher_id (odwołanie do users)
      - student_id (odwołanie do users)
      - schedule_id (odwołanie do schedule_dictionary)
      - start_at
      - end_at
    schedule_dictionary:
      - id
      - day_name
      - start_hour
      - end_hour
    schedule_user_connection:
      - user_id (odwołanie do users)
      - schedule_id (odwołanie do schedule_dictionary)

I teraz tak: system ma za zadanie dopasowanie spotkania (meetings) nauczyciela (teacher_id) do ucznia (student_id) w oparciu o kilka parametrów, ogarnąłem sobie wszystkie poza właśnie dopacowaniem harmonogramu tak, by system był w stanie w liscie dostępnych nauczycieli dla danego ucznia pokazać tylko tych, który w tym tygodniu lub w następnym tygodniu będą w stanie udzielić pomocy tej osobie.

Myślałem już nad obejściem tego, zrzucając więcej na PHP: pobrać wszystkich pasujących nauczycieli - czyli takich, którzy mają takie samo schedule_id, co potrzebujący (jeden nauczyciel ma 2 opcje harmonogramu), a potem porównując w pętli daty coś dobierze, ale nie działa to tak, jak powinnno i nie satysfakcjonuje mnie to.

Z góry dziękuję za pomoc!

PS: przepraszam za niedokładny tytuł.
FalcoPL
Szymon

Posty: 23
Dołączył(a): 14.04.2017

Re: [MYSQL] Skomplikowane zapytanie mysql

Post 30.10.2018, 22:05:08

Ja bym poprawił najperw table, w MySQL można porównywać daty ze soba typy date i datetime,
możesz zmienić schedule_dictionary miał datę i godzinę startu i zakończenia i nie potrzebujesz raczej start_at oraz end_at w tabeli meetings to możesz wrzucić do dictionary, nie potrzebe też Ci jest chedule_user_connection bo tą rolę pełni meetings. Chyba że chcesz mieć zapisane kiedy user na wolne i bo może być zajęty nawet jak nie ma spotkania. Jeśli tak nie jest to ja bym proponował strukturę:

Kod: Zaznacz cały
users:
- id
- name
meetings:
- teacher_id (odwołanie do users)
- student_id (odwołanie do users)
- schedule_id (odwołanie do schedule_dictionary)
schedule_dictionary:
- id
- start_time
- end_time


i wtedy możesz sobie porównywać daty za pomocą funkcji do dat i czasu https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_adddate

Jeśli jednak potrzebujesz tej ostaniej tabeli to i tak zapis spotkań pod postacią datetime jest lepszym rozwiązaniem.
jjankiewicz
Jakub Jankiewicz

Posty: 12
Dołączył(a): 30.10.2018
Lokalizacja: Świętokrzyskie


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 52458 zarejestrowanych użytkowników.
Najnowszy użytkownik: AnthonyEndug


Nasi użytkownicy napisali:

  • 939039 wiadomości
  • w 248499 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)