Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Użycie wartości z kolumny jako nazwa tabeli przy join - da radę?
Forum PHP.pl > Forum > Bazy danych > MySQL
kilab
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ę sad.gif
markonix
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.
kilab
Tak tak, pętla to ostateczność, ale moja natura optymalizatora nakazuje mi najpierw spróbować w SQL 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 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 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.
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.