Übergeordnete und untergeordnete Nachrichten in derselben MYSQL-Abfrage
Posted: 19 Jan 2025, 17:52
Aus der obigen Tabelle wollte ich eine Liste mit allen Nachrichten extrahieren, bei denen parent_id = 0 und sender_id oder Receiver_id meiner Login-ID entsprechen.
Das war einfach, aber ich konnte nicht herausfinden, wie ich alle untergeordneten Nachrichten für Nachrichten zählen kann, bei denen parent_id = 0 ist.
Ich habe Folgendes versucht:
Eine weitere Sache, die ich nicht herausfinden konnte, war, wie ich alle untergeordneten und übergeordneten Nachrichten für jede parent_id=0 zähle, wobei read=1, wenn sender_id = $login_id, oder read=1, wenn Receiver_id = $ login_id
Hier ist ein Beispiel:
Ausgabe:
Code: Select all
Table:Messages
id | parent_id | sender_id | receiver_id | subject | message | read
Ich habe Folgendes versucht:
Code: Select all
$my_messages = mysql_query("
SELECT
messages.id, messages.sender_id, messages.receiver_id, messages.subject, messages.message, messages.minute,
messages.hour, messages.day, messages.month, messages.year, COUNT(*) as 'mcount'
FROM messages
LEFT JOIN messages AS mchild ON mchild.parent_id = messages.id
WHERE(messages.sender_id='$login_session' or messages.receiver_id='$login_session')
and messages.parent_id = '0'
ORDER BY messages.year DESC, messages.month DESC, messages.day DESC, messages.hour DESC, messages.minute DESC
");
Hier ist ein Beispiel:
Code: Select all
Table:Messages
id | parent_id | sender_id | receiver_id | subject | message | read
1 | 0 | Paul | John | Test | Test | 0
2 | 0 | Paul | Chris | Test | Test | 0
3 | 1 | john | Paul | Test | Test | 0
4 | 1 | Paul | John | Test | Test | 1
5 | 1 | John | John | Test | Test | 0
6 | 0 | Paul | Jack | Test | Test | 0
Code: Select all
ID:1 - 4 messages (1 parent+ 3 children), $unread=1 because read = 1 for ID:4 which is a child for ID:1
ID:2 - 1 message
ID:6 - 1 message