KubaaPK
7.08.2015, 12:21:42
Dzień dobry. Piszę sobie w ramach nauki taki mini helpdesk. Mam bazę danych, w niej dwie tabele. Pierwsza 'users' w niej przechowuje informacje z rejestracji, tj. nick, imię, nazwisko itd. W drugiej 'problems' są requesty zgłoszone przez użytkowników, tj. temat, tytuł, opis problemu i data dodania. Dodawanie requestów i ich wyświetlanie działa prawidłowo. Ale teraz chcę, żeby pod requestem, obok daty przesłania wyświetlało mi się kto go wysłał Np. "07.08.2015 12:00, Jan Kowalski". Proszę o pomoc jak mogę to zrobić. Na razie chodzi mi po głowie tylko dodanie pól przy requestach z imieniem i nazwiskiem i przy wysyłaniu dodawanie ich do tabeli z problemami, gdzie dodałbym potrzebne kolumny. (Albo też napisać funkcję, która to będzie przypisywała do zmiennych automatycznie dane na których mi zależy i przy wysyłaniu zgłoszenia dodawać te rekordy ze zmiennych do bazy). Z góry dziękuję za pomoc.
bobek358
7.08.2015, 12:25:36
Zwykłe left join tabeli z requestami do tabeli z userami.
W tabeli z requestami musisz zapisać ID użytkownika i po tym łączyć.
Tuminure
7.08.2015, 12:33:15
Cytat
Zwykłe left join tabeli z requestami do tabeli z userami.
Jeżeli post zawsze ma autora (a powinien), to należałoby raczej użyć inner joina. Oczywiście left join również zadziała.
bobek358
7.08.2015, 12:57:49
A jak przez przypadek skasuje autora w bazie a nie ma założonych kluczy obcych i referencji ?
No chyba że ma, to wtedy ok może być bez left
Comandeer
7.08.2015, 13:01:44
Jeśli nie ma założonych kluczy obcych i referencji i przez przypadek skasuje autora, to left join będzie tylko nieudolną próbą leczenia objawów poważnej choroby
nospor
7.08.2015, 13:10:05
Ja tam zawsze uzywam LEFT JOIN w takim przypadku. To co jest niezbedne to zgloszony problem. Jesli z jakiegos powodu brak info o userze, trudno, da sie z tym zyc. Ale nie wyobrazam sobie sytuacji, ze nie zobacze zgloszonego problemu tylko dlatego ze z jakiego powodu zniknal jego autor.
KubaaPK
7.08.2015, 13:34:17
Dziękuję za wszystkie odpowiedzi. Udało mi się to zrobić LEFT JOINem, jeszcze raz dziękuję :-).