J'ai actuellement une instruction MySQL SELECT qui extrait les informations de deux tables pour afficher un champ "Messages envoyés" pour la messagerie privée.MySQL Select - Combiner COUNT avec GROUP_CONCAT
Je voudrais savoir comment je peux ajouter un COUNT à ma requête pour compter le nombre de "récepteurs" dans un fil.
est ici l'essentiel de base de ma structure de la table, (REMARQUE: le lien relationnel entre les deux tables est le 'message-id' dans h-info et le "id" dans pm_data):
pm_info:
id message_id receiver_id is_read read_date
pm_data:
id date_sent title sender_id thread_id content
Voici mon instruction SELECT:
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
Et ouputs les destinataires comme ceci:
Message 1 - Recipients: John, David, Steve - thread_id = 1234
Message 2 - Recipients: Bill, David, John, Ed, Steve - thread_id = 1345
Fondamentalement, ce que je lik e to do a l'option de COUNT les destinataires, donc dans l'exemple ci-dessus, "Message 1" affichera trois (3) destinataires, et "Message 2" affichera cinq (5) destinataires. De cette façon, si j'ai un fil/message qui a été envoyé à 30 utilisateurs, les trente noms ne seront pas imprimés.
Merci!
Soyez conscient des restrictions de GROUP_CONCAT en raison de la longueur de sa valeur de retour. –