Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 未读私人邮件回复的通知计数_Mysql_Database Design_Join_Count - Fatal编程技术网

Mysql 未读私人邮件回复的通知计数

Mysql 未读私人邮件回复的通知计数,mysql,database-design,join,count,Mysql,Database Design,Join,Count,我有一个使用PHP和mySQL并带有通知的私有消息传递系统 数据库表中有以下字段并非所有列出的消息\u tbl: MessageID senderUserID RecUserID Message Subject DateTime Status - whether read or not i.e 0/1 所有回复都存储在第二个表中,因为每条消息都会创建一个线程。父消息中存在一个线程,因此每次加载父消息时,它的所有回复都会随之加载。 第二个表看起来有点像这样:-回复\u tbl messageID

我有一个使用PHP和mySQL并带有通知的私有消息传递系统

数据库表中有以下字段并非所有列出的消息\u tbl:

MessageID
senderUserID
RecUserID
Message
Subject
DateTime
Status - whether read or not i.e 0/1
所有回复都存储在第二个表中,因为每条消息都会创建一个线程。父消息中存在一个线程,因此每次加载父消息时,它的所有回复都会随之加载。 第二个表看起来有点像这样:-回复\u tbl

messageID - FK
senderUserID
rstatus - how should i use this?
Mesage
DateTime
我需要显示所有未读邮件的计数。 目前,我运行了一个sql计数函数,从消息中获取未读消息的总数,其中状态为0,userid等于RecUserID,这是最简单的部分

但是我有一个小问题是如何获得回复表的计数?数据库设计可以改进吗


谢谢各位。

在我看来,回复本身就是一条信息,为什么要放在单独的表格中呢。对回复的回复会发生什么?看起来在那一点上你会有一个空的FK

我的第一个想法是:

将ParentID列添加到Messages表 将根邮件的ParentID设置为0 如果是回复,请将ParentID设置为MessagesID 有了这种结构,你可以很容易地跟踪回复,线程可以继续深入到你想要的程度


不过,只是我的想法

是的,您的回答确实正确,但在这种情况下,如何获取所选邮件的所有回复?如果您将邮件id say存储在变量$message\u id:SELECT*WHERE parentID='$message\u id'd'oh中,这是有意义的。另一个问题是,如果希望在收件箱中显示邮件而不是回复,您会从messagetbl中选择subject,其中RecUserID=$userid和parentID=0,对吗?