Ich versuche, eine einfache Chat mit diesem Schema zu tun:MySQL-Datenbankschema für einfachen Chat 00.59
mes_id int(10) unsigned Auto Increment
mes_useid_receiver int(10) unsigned
mes_useid_sender int(10) unsigned
mes_date int(10) unsigned
mes_message text
mes_read tinyint(3) unsigned [0]
mes_visible_for_who int(10) unsigned NULL NULL = both; 0 = none; ID user
Das Problem ist, wie ich die Liste der Kontakte der empfangenen Nachrichten erhalten und gesendeten Nachrichten ?
Ich versuche, etwas wie folgt aus:
SELECT use_name, MAX(mes_date) AS date
FROM message JOIN user ON mes_useid_receiver=use_id
WHERE uti_id!=1
AND (mes_useid_receiver=1 OR mes_useid_sender=1)
AND (mes_visible_for_who IS NULL OR mes_visible_for_who=1)
GROUP BY use_id
ORDER BY date DESC
Aber mit dieser Abfrage kann ich die Kontakte erhalten nur die eine Nachricht an user_id = 1
senden, möchte ich auch die Kontakte erhalten, die User_id = 1 gesendete Nachrichten.
Edited:
Mit Vereinigung kann ich fast, dass ich will:
SELECT use_id, use_name, mes_read FROM message
JOIN user ON mes_useid_receiver=use_id
WHERE use_id!=1
AND (mes_useid_receiver=1 OR mes_useid_sender=1)
AND (mes_visible_for_who IS NULL OR mes_visible_for_who=1) GROUP BY use_id
UNION
SELECT use_id, use_name, mes_read FROM message
JOIN user ON mes_useid_sender=use_id
WHERE use_id!=1
AND (mes_useid_receiver=1 OR mes_useid_sender=1)
AND (mes_visible_for_who IS NULL OR mes_visible_for_who=1) GROUP BY use_id
Ich brauche die mes_date die Liste zu bestellen, aber wenn ich die mes_date wählen werde ich doppelte Zeilen erhalten.
Danke für die Hilfe.
Danke! Die Gruppe von use_id kann außerhalb sein. – NAG