Left Join erweitern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Left Join erweitern

    Eine Datenbankfrage.
    Ich habe ein Ticketsystem (eTicket Help Desk Software PHP), das eine Haupttabelle "tickets" hat und, jeweils über das Feld "ticket" verknüpft, zwei Untertablelen "ticket_answers" und "ticket_messages".

    Es gibt eine Suchfunktion, in der gleichzeitig alle Ticketfelder und die Felder "message" der Untertabellen nach dem gewünschten Suchbegriff durchsucht. Das wird mit zwei LEFT JOINs realisiert.

    Ich möchte nun, daß zusätzlich zu den zwei Untertabellen noch eine dritte, "ticket_privmsg" für private Nachrichten, durchsucht wird. Ich blicke aber nicht, wie ich die Anweisung erweitern muß, weil sich mir das Grundprinzip dieser Verkettung nicht erschließt. Wenn jemand Lust hat, sich das anzuschauen und mir einen Tipp zu geben, bin ich dankbar.

    Code:
    SELECT DISTINCT tickets.ID AS ID,
    tickets.status, 
    tickets.timestamp as timestamp, 
    tickets.cat AS cat, 
    tickets.subject AS subject, 
    tickets.rep AS rep, 
    tickets.email AS email, priority,
    tickets.name AS name 
    FROM (( tickets LEFT JOIN ticket_messages ON ticket_messages.ticket = tickets.ID ) 
    LEFT JOIN ticket_answers ON ticket_answers.reference = ticket_messages.ID )
    
    WHERE ( ticket_messages.message LIKE '%Suchbegriff%' 
    OR ticket_privmsg.message LIKE '%Suchbegriff%' 
    OR ticket_answers.message LIKE '%Suchbegriff%' 
    OR tickets.subject LIKE '%Suchbegriff%' 
    OR tickets.phone LIKE '%Suchbegriff%' 
    OR tickets.ip LIKE '%Suchbegriff%' 
    OR tickets.name LIKE '%Suchbegriff%' )
    Zuletzt geändert von pekka; 10.09.2009, 18:55.

  • #2
    Hallo,

    warum klammerst du die Tabellenreferenzen? MySQL kümmert sich eigentlich und klammern sollte man nur, wenn man weiß, was man tut und diese Optimierungen mit EXPLAIN überwacht.

    Ohne die Klammerung ist es auch ganz einfach, noch einen JOIN dazuzubasteln:

    Code:
    FROM tickets
    LEFT JOIN ticket_messages ON ticket_messages.ticket = tickets.ID 
    LEFT JOIN ticket_answers ON ticket_answers.reference = ticket_messages.ID
    LEFT JOIN ticket_privmsg ON ticket_privmsg.ticket = tickets.ID
    Gruß,

    Anja
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Super, so funktioniert's.
      Die Klammern waren schon drin, nehm ich raus.
      Vielen Dank!

      Kommentar

      Lädt...
      X