日期:2014-05-17  浏览次数:20639 次

站内信 数据库设计
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  不就可以了