SQL statement für Nachrichtenverkehr erweitern

Basti_2015

Mitglied
Hallo, ich habe vor 2\3 Jahren ein nachrichtenscript für ein Projekt realisiert. Die dazugehörige Sqlabfrage habe ich mir damals aus dem Internet gezogen. Für die damaligen Voraussetzungen perfekt, für das neue nicht geeignet. Da es im ersten Projekt um die Verwaltung unserer Arbeitstageszettel ging, rein privat, reichte die Kommunikation mit einer Nachrichtenbox aus.

Nun versuche ich jedoch, die gefilterten letzten Nachrichten auf den Betreff/titel zusätzlich zu filtern/aufzuteilen.

Um dies zu realisieren, müsste ich das statement jedoch erstmal verstehen, was ich absolut nicht in mein Kopf bekomme.

Hier mal die Abfrage.
Code:
SELECT 
                             msg.user_2,
                              msg_date,
                              pm_message,
                              pm_status,
                              users.USERNAME
                            FROM
                                (
                                    SELECT
                                        user_1,
                                        user_2,
                                        MAX(msg_date) AS max_msg_date
                                    FROM
                                        (
                                            SELECT
                                                :uid AS user_1,
                                                IF(pm_sender = :uid, pm_recipient, pm_sender) AS user_2,
                                                pm_date AS msg_date
                                            FROM
                                                cf4_pm
                                            WHERE
                                                IFNULL(:uid IN (pm_recipient, pm_sender), FALSE)
                                        ) AS dat
                                    GROUP BY
                                        user_1,
                                        user_2
                                ) AS max_dat
                                INNER JOIN  (
                                        SELECT
                                            :uid AS user_1,
                                            IF(pm_sender = :uid, pm_recipient, pm_sender) AS user_2,
                                            pm_message,
                                            pm_date AS msg_date,
                                            pm_status
                                        FROM
                                            cf4_pm
                                        WHERE
                                            IFNULL(:uid IN (pm_recipient, pm_sender), FALSE)
                                            && pm_archived != 1
                                            && pm_deleted != 1
                                    ) AS msg
                                    ON msg.user_1 = max_dat.user_1
                                    AND msg.user_2 = max_dat.user_2
                                    AND msg.msg_date = max_dat.max_msg_date
                            JOIN
                                                      users
                                                  ON
                                                      msg.user_2 = users.ID
                            ORDER BY
                                msg_date DESC

Diese Abfrage gibt mir immer die letzte Nachricht einer Konversation zweier user. Ich benötige dies jetzt mit einem zusätzlichen indikator, und zwar dem title/Betreff der Nachricht.

Ich erkenne eine Verschachtelung von Abfragen, ein join in eine andere Tabelle. Was das AS und die IFs machen, bin ich mir nicht sicher. Woher das max_dat her- und wo ich jetzt den Teil mit WHERE pm_title==pm_title hinkommt und ob es auch überhaupt so zu realisieren geht..... Mein Kopf raucht

Hat jemand eine Idee und ist diese Abfrage überhaupt so OK?

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Beste Grüße
Basti
 
Gelöst, ich selektieren nun meinen title mit und habe diese zusätzlich in GROUP BY hinzugefügt. Jetzt scheint es zu klappen.

Schade nur, dass man seinen ersten Beitrag nicht mehr ändern kann...
 
Zurück