![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 180 Pomógł: 19 Dołączył: 4.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, tworzę system raportowania treści przez użytkowników. Ze względu na to, że raporty tyczyć się mogą komentarzy, postów, zdjęć, itd. w tabeli trzymam nazwę elementu którego dotyczy raport (żeby było łatwiej, zmieniłem na nazwę tabeli, którego tyczy się raport - comments, posts, photos, itd.).
Tabela z raportami wygląda tak: id | created | element_id | element_type | author_id Chciałbym otrzymać: id, created, element_type.text (comments.text), users.username I teraz pytanie do was - czy jest możliwość pobrania jednym zapytaniem (treści, nazwy) zgłoszonego elementu razem z datą i nazwą użytkownika? Z loginem usera nie ma problemu, pojawia się on przy join gdy muszę wskazać tabelę dla zgłoszonego elementu z której ma być pobrany tytuł, który chciałbym pobrać z kolumny element_type. Przychodzi mi tylko do głowy alias (SELECT reports.element_type as type ... JOIN type ON reports.element_id = type.id ...), ale tą droga niestety za daleko nie zajdę (IMG:style_emoticons/default/sad.gif) Ten post edytował kilab 26.12.2012, 23:06:07 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Hmm, wczoraj miałem ten same problem.
W końcu to puściłem w pętli w PHP bo obiekty się różnią mocno i widoku są różnie wyświetlane. Oczywiście przyjmujemy że chcesz pobrać kolumnę wspólną dla wszystkich - sam jestem ciekaw czy da radę. Może UNION albo SWITCH. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 180 Pomógł: 19 Dołączył: 4.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak tak, pętla to ostateczność, ale moja natura optymalizatora nakazuje mi najpierw spróbować w SQL (IMG:style_emoticons/default/biggrin.gif)
Wartości kolumny mogą być różne dla kolejnych rekordów (comments, posts, itd.) Jutro na świeżo jeszcze do tego podejdę, może ktoś coś doradzi do tego czasu (IMG:style_emoticons/default/wink.gif) edit: Wyczytałem, że prawdopodobnie można coś takiego osiągnąć używając prepared statements, jednak mój poziom wtajemniczenia SQL nie umożliwia mi odniesienia sukcesu (IMG:style_emoticons/default/sad.gif) Sprawa nie jest szczególnie ważna więc mogę to zrobić w pętli i dwoma zapytaniami, w wolnym czasie wrócę do tego, jak postudiuję trochę więcej SQL. Ten post edytował kilab 27.12.2012, 12:37:52 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 22:07 |