Ich habe derzeit eine MySQL SELECT-Anweisung, die Informationen aus zwei Tabellen zieht, um ein "Gesendete Nachrichten" -Feld für private Nachrichten anzuzeigen.MySQL Select - Kombinieren COUNT mit GROUP_CONCAT
Ich würde gerne wissen, wie ich eine COUNT zu meiner Abfrage hinzufügen kann, um die Anzahl der "Empfänger" in einem Thread zu zählen.
Hier ist der grundlegende Kern meiner Tabellenstruktur, (Anmerkung: die relationale Verbindung zwischen den beiden Tabellen ist die 'Message-ID' in PM-info und die "id" in pm_data):
pm_info:
id message_id receiver_id is_read read_date
pm_data:
id date_sent title sender_id thread_id content
hier ist meine SELECT Statement:
SELECT pm_info.is_read, group_concat(DISTINCT receiver.usrFirst) as receiver_name,
pm_data.date_sent, pm_data.title, pm_data.thread_id, pm_data.id as data_id,
MAX(date_sent) AS thread_max_date_sent
FROM pm_info
INNER JOIN pm_data ON pm_info.message_id = pm_data.id
INNER JOIN tblUsers AS receiver ON pm_info.receiver_id = receiver.usrID
WHERE pm_data.sender_id = '$usrID'
GROUP BY pm_data.thread_id
ORDER BY thread_max_date_sent DESC
Und es ouputs die Empfänger wie folgt aus:
Message 1 - Recipients: John, David, Steve - thread_id = 1234
Message 2 - Recipients: Bill, David, John, Ed, Steve - thread_id = 1345
Im Grunde, was ich würde lik Sie haben die Möglichkeit, die Empfänger zu ZÄHLEN. Im obigen Beispiel würde "Nachricht 1" drei (3) Empfänger anzeigen, und "Nachricht 2" würde fünf (5) Empfänger anzeigen.
Auf diese Weise, wenn ich einen Thread/eine Nachricht habe, die an 30 Benutzer gesendet wurde, werden nicht alle dreißig Namen ausgedruckt.
Danke!
von Group_concat Einschränkungen bewusst sein, wegen der Länge seines Rückgabewertes. –