Ich sitz seit ner ewigkeit an folgendem Problem:
Ich versuche eine Zählung von ungelesenen "NachrichtenChannels", wobei der gelesen/ungelesen Status an einzelnen Nachrichten in diesem Channel festgelegt wird.
Allerdings scheint COUNT() nicht auf die INNER JOINs zu achten, und gibt falsche zahlen aus.
Beispiel: Es gibt 5 Channels, davon sind 2 komplett gelesen, also 3 ungelesen.
In einem der ungelesenen sind aber 2 ungelesene Nachrichten.
Gewünschtes ergebnis wäre 3, da 3 ungelesene channels.
Wirkliches Ergebnis ist zurzeit 4, da 4 ungelesene Nachrichten.
Ich komm hier grad echt nicht weiter, villeicht kann mir jemand von euch nen Tipp geben.
relevante Tabellen:
ent_user, ent_message, ent_messagechannel
und relevante relationstabellen (beinhalten neben einer eigenen ID nur die ID beider verbundener Objekte)
cmp_recipient2message, cmp_messagechannel2message
Mein aktueller Versuch (kurzvariante, ich verzichte auf das joinen auf ent_messagechannel und ent_user, und steig direkt bei den relationen ein):
Ich hab inzwischen alles mögliche versucht, sogar mit subselects, aber ich komm einfach nicht auf das gewünschte Ergebnis.
Vorschläge?
Ich versuche eine Zählung von ungelesenen "NachrichtenChannels", wobei der gelesen/ungelesen Status an einzelnen Nachrichten in diesem Channel festgelegt wird.
Allerdings scheint COUNT() nicht auf die INNER JOINs zu achten, und gibt falsche zahlen aus.
Beispiel: Es gibt 5 Channels, davon sind 2 komplett gelesen, also 3 ungelesen.
In einem der ungelesenen sind aber 2 ungelesene Nachrichten.
Gewünschtes ergebnis wäre 3, da 3 ungelesene channels.
Wirkliches Ergebnis ist zurzeit 4, da 4 ungelesene Nachrichten.
Ich komm hier grad echt nicht weiter, villeicht kann mir jemand von euch nen Tipp geben.
relevante Tabellen:
ent_user, ent_message, ent_messagechannel
und relevante relationstabellen (beinhalten neben einer eigenen ID nur die ID beider verbundener Objekte)
cmp_recipient2message, cmp_messagechannel2message
Mein aktueller Versuch (kurzvariante, ich verzichte auf das joinen auf ent_messagechannel und ent_user, und steig direkt bei den relationen ein):
Code:
SELECT COUNT(`cmp_messagechannel2message`.`MessageChannelID`) FROM `cmp_recipient2message` INNER JOIN `ent_message` ON `ent_message`.`MessageID` = `cmp_recipient2message`.`MessageID` INNER JOIN `cmp_messagechannel2message` ON `cmp_messagechannel2message`.`MessageID` = `ent_message`.`MessageID` WHERE `cmp_recipient2message`.`UserID` = 1 AND `ent_message`.`IsRead` = FALSE
Vorschläge?
Kommentar