站内信 数据库设计
msg表:
id int 自增长id
title varchar(128) 短信标题
content varchar(512) 短信内容
createTime datatime 发信时间
user_has_msg表:
id int
senderid int 外键关联发送者卡号
receverid int 外键关联收信人
msgid int 外键关联短信息
sendStatus tinyint 发件箱中的状态:0--普通;1--删除
receveStatus tinyint 收件箱状态:0--普通;1--删除
readStatus tinyint 阅读状态:0--未读;1--已读
我的问题是:1。怎么写语句实现发件箱中的状态:0--普通;1--删除 收件箱状态:0--普通;1--删除 阅读状态:0--未读;1--已读
2。发件人和收件人是同一群人怎么写外间关联呢
------解决方案--------------------
关于问题1,那你这个表格设计不合理. SendStatus和receiveStatus 这两列可以演化成 Status, Message(Send/receive) 这两列.这样的话,对于你以后开发会直接明了些.当然按照你现在的设计也能做,但是对于你的要求,需要两个Select, 然后再union.
问题2:
select * from user_has_msg
inner join user send on send.id = user_has_msg.senderid
inner join user receive on receive.id = user_has_msg.senderid
主要就是 user使用不同的关联名称.
------解决方案--------------------
状态1 (发件、收件、已删除、订阅邮件、垃圾邮件)
状态2 (已读 未读 标记)
------解决方案--------------------
SQL code
1。怎么写语句实现发件箱中的状态
--如果按照我的思路设计 join之后加上条件 where 状态1=发件
--发件箱不分其他什么状吧
2。发件人和收件人是同一群人怎么写外间关联呢
--你查询这个是什么用途?
-- where senderid =receverid 不就可以了