Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PHP][MYSQL] - Dwie tabele dwa takie same pola jak przyporządkować

pildid 23 Cze 2015 16:08 945 5
  • #1 23 Cze 2015 16:08
    pildid
    Poziom 2  

    Witam.
    Od 6 lat czytuję to forum i wiele już się nauczyłem, ale tym razem muszę spytać bo zauważyłem, że idę nie tą drogą co potrzeba.

    Mam dwie tabele: "hesk_tickets" oraz "hesk_replies" a w nich pola "message" w których są treści które muszę do siebie przyporządkować. Przy czym w tabeli "tickets" zawsze będzie więcej wpisów niż w tabeli "replies" z wiadomych względów.
    Dotarłem do miejsca, gdzie wyświetlam zawartość obu pól "message", ale odpowiedzi nie są przyporządkowane do właściwych zgłoszeń, tylko wyświetlają się po kolei. W tabeli "replies" jest kolumna "reaplyto", która pokazuje na który "id" z tabeli "tickets" została udzielona odpowiedź.
    [PHP][MYSQL] - Dwie tabele dwa takie same pola jak przyporządkować [PHP][MYSQL] - Dwie tabele dwa takie same pola jak przyporządkować

    A oto kod który to robi:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Pytanie dotyczy tego, jak zmodyfikować ten kod, żeby "reaplyto" o numerze 11 pojawiło się przy zgłoszeniu numer 11 a nie 2.
    To bardziej nowe hobby niż praca, stąd moje braki w wiedzy. Ale bardzo mi się to podoba! Przerabiam mój stary kod sprzed 3 lat. Teraz pewnie PHP bardzo się rozwinęło, ale proszę o wyrozumiałość. :)
    Pozdrawiam
    Sebastian.

    0 5
  • #2 23 Cze 2015 17:59
    Dżyszla
    Poziom 42  

    To albo się robi jednym zapytaniem (JOIN), albo w pętli głównego wykonujesz ciągle zmieniane (z WHERE) zapytanie dla szczegółów. Zależy, jaki dokładnie efekt chcesz uzyskać i czy wolisz przesyłać więcej danych z serwera, czy bardziej go obciążyć większą ilością zapytań.

    0
  • #3 24 Cze 2015 11:01
    pildid
    Poziom 2  

    Poczytałem o JOIN. I chyba to będzie w moim przypadku bardziej przydatne. Musze przebudować cały mój kod z tego co widzę, ale nie wiem za bardzo jak ze względu na wyświetlanie kolumny o nazwie "message" która znajduje się w obu tabelach.

    Potrzebuję zatem użyć JOIN aby wyświetlić 7 pozycji z hesk_tickets oraz jedną pozycję z hesk_replies przypisując "reaplyto z hesk_replies" do "id z hesk_tickets" i wyświetlając wszystko od największego numeru id pierwszego.

    Biorąc pod uwagę że w wylistowaniu potrzbuję danych z dwóch tabel w których dwie komumny maja takie same nazwy "message" będę potrzebował jakiejś bardziej złożonej składni.

    Mam dostęp do starej bazy zgłoszeń i chcę z niej z sentymentu dać możliwość podglądu starych zgłoszeń [hesk_tickets] oraz odpowiedzi do nich [hesk_replies] żeby móc czasem sobie do nich ze znajomymi z pracy wracać. Stąd moje starania :)

    0
  • #5 22 Lip 2015 17:27
    Rezystoreczek
    Poziom 20  

    Dzyszla dobrze pisze, ale ogólnie takich sytuacji powinno sie unikać :D
    Nazywaj kolumny tak, by ich nazwy były unikalne. :!:

    0
  • #6 23 Lip 2015 13:58
    pildid
    Poziom 2  

    Dziękuję wszystkim za zainteresowanie i pomoc.
    Dla potomnych, gdyby nie było możliwości dowolnej zmiany nazwy kolumn, aby się nie powtarzały, wklejam moje wypociny. Działające i dające się zastosować do podobnych przypadków.

    Code:
    $sql = "SELECT ticket.id, ticket.dt, ticket.name, ticket.custom1, ticket.message, ticket_category.name AS 'CATEGORY', reply.message AS `MESSAGE`, replay_user.user AS `FIRSTREPLAYBY`, ticket.closedat 
    
          FROM `hesk_tickets` AS ticket
          LEFT JOIN `hesk_replies` AS reply ON ticket.id = reply.replyto
          LEFT JOIN `hesk_users` AS replay_user ON ticket.firstreplyby = replay_user.id
          LEFT JOIN `hesk_categories` AS ticket_category ON ticket.category = ticket_category.id
          ORDER BY ticket.id DESC";


    Dżyszla dziękuję.

    0