mysql数据库中的消息查询获取未读消息的数量(带查询)

时间:2018-11-07 13:46:44

标签: php html mysql

我有一个用于存储消息的数据库,我现在能够提取单个用户发送的消息量以及带有DISTINCT count(*)查询的用户名,但是现在我无法提取具有以下内容的消息未读的列。我的问题是从下面的查询中,任何人都可以看到一个快速修复程序来显示未读邮件的数量。我的数据库有一个READ消息,在创建消息时输入是或否。

下面的查询提取每个用户的用户名和消息数量,并在旁边显示用户名和消息数量。

但是我希望将邮件数量替换为未读邮件数量。

这是代码

$db = new PDO("mysql:host=localhost;dbname=messages", 'root', ''); // 1. set database with this instead of conect - or change conect to this

$query="SELECT DISTINCT messageaccountname,count(*) FROM `messagedatabase` WHERE `listID`='$listID' GROUP BY messageaccountname  ";

$stat=$db->prepare($query);

$stat->execute();       

while($row = $stat->fetch()){

    $messagenumber = $row['count(*)'];
     $messageaccountname=$row['messageaccountname'];


        if ($messageaccountname != $useraccountname){


echo"<div id='namecon' class='ubnames' onclick='selectmessage(\"{$messageaccountname}\")'>{$messageaccountname} ({$messagenumber}) </div>"; 
                            }
   }

我认为我需要更改messageaccountname,count(*)WHERE listID = $ listID GROUP BY messageaccountname

但是我不确定应该如何显示结果数,

如果有人可以看到我需要做什么,请让我知道,因为我整天都在寻找答案,但尚未找到答案。

谢谢大家。

Lez

1 个答案:

答案 0 :(得分:0)

我接受您的READ列类型为varchar或enum,其值为YES和NO。因此,如果您像下面这样更改查询,则可以获得未读邮件计数

SELECT DISTINCT messageaccountname,count(*), sum(if(read = "NO", 1, 0)) unread_count FROM `messagedatabase` WHERE `listID`='$listID' GROUP BY messageaccountname

希望会帮助您