Łączenia tabel MySQL

0

Witam.

Mam problem z połączeniem trzech tabel w MySQL

Mam tabele user która ma pola: id_user, nazwisko, dzien_urodzin, miesiac_urodzin, rok_urodzin.
tabele imieniny: id_im, id_user, dzien_im, miesiac_im
oraz tabele okazje: id_okazji, id_user, opis_okazji, dzien_okazji, miesiac_okazji, rok_okazji

Oczywiście jedna osoba może mieć wiele imienin i okazji wiec trzeba bylo rozbić to na 3 tabele.

Jak teraz wyświetlić zapytaniem MySQL wszystkie te dane jako jedną tabele z możliwością sortowania.
Tzn jeśli zrobimy ORDER BY dzien_okazji to automatycznie posortuje się cała tabela.

Kod będe pisał w PHP ale samo zapytanie SQL mi wystarczy.
Kombinowałem z opcją JOIN ale przyznaje sie nie za bardzo mi to wychodzilo.

Dziekuje za wszelkie odpowiedzi i pozdrawiam.

0

przede wszystkim imieniny oraz urodziny powinny być w tabeli okazje, a tabela okazje powinna mieć dodatkowy znacznik czy jest to okazja jednorazowa czy cykliczna + co ile jest ten cykl (dzień, tydzień, miesiąc, kwartał, rok, 10lat, 25lat, 50lat, 100lat, itd, itp - chociaż można założyć, że jeśli cykliczna to co rok :) ). Teraz jesli okazja jednorazowa to data jest data okazji :) a jeśli okazja jest cykliczna to data jako data początkowa a to, co ile ma być powtarzana odczytujesz z tego co ile ten cykl.

Co Ci to daje? - nie dublujesz danych, masz prostą strukturę z 2 tabelami i przede wszystkim nie masz porblemu z pokazaniem wszystkich możliwych okazji (szczególnie jak sobie założysz, że albo jednorazowo albo co roku dana okazja).

Jeśli natomiast chcesz to wyciągnąć z tej struktury co masz to ja nie bardzo wiem, co by miało Ci to zapytanie zwrócić - daj przykładowe dane z tabel i przykładowy wynik, który chcesz uzyskać.

0

Tutaj wszystkie okazje mogą być traktowane jako cykliczne.

Podaje przykład:

Tabela user:

[id user]    [imie]    [nazwisko]    [dzien_urodzin]    [miesiac_urodzin]    [rok_urodzin]
1              Adam        Kiep                 03                           11                    1982
2              Zbyszek     Kiep                  12                          09                    1971

Tabela okazje:

[id_okz]   [id_user]   [opis_okazji]    [dzien_okz]   [miesiac_okz]
1                   1         okazja slubu           03                    02
2                   2         jakies tam              12                    11
3                   1         cos tam jeszcze      27                     07

Tabla imieniny:

[id_im]    [id_user]    [dzien_im]   [miesiac_im]
1                 1                 12             03
2                 2                 19              09

Tabela która ma być wyświetlona:

[Imie][Nazwisko][dzien_urodzin][miesiac_urodzin][rok_urodzin][dzien_im][miesiac_im][dzien_okz][miesiac_okz]

Tutaj ma być możliwość sortowania po datach... z tym nie ma problemu
(ORDER BY miesiac_im DESC, dzien_im DESC;)
Tylko jak połączyć te tabele gdzie "łącznikiem jest id_user" [???]

0
select u.imie, u.nazwisko, u.dzien_urodzin, u.miesiac_urodzin, u.rok_urodzin, i.dzien_im, i.miesiac_im, o.opis_okazji, o.dzien_okz, o.miesiac_okz
from user u
left join okazje o on u.id_user = o.id_user
left join imieniny i on u.id_user = i.id_user
order by co_tam_chcesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1