事情经过一位帅哥(id为1)送了999朵玫瑰花给一位美女(id为2)数据记录在history_logs1表中
history_logs1表如下user_id  friend_id  event_id  date_event      number
2     1      10     2010-02-14 10:37:21  999event_id=10表示送玫瑰花这位帅哥又邀请这位美女一起去看电影数据记录在history_logs2表中
history_logs2表如下user_id  friend_id  event_id  date_event
2     1      11     2010-02-14 20:30:05event_id=11表示邀请您一起去看电影美女来了以后,系统要将帅哥的两条消息按照时间排序以下面的形式展现给美女[2010-02-14 10:37:21]您的好友[帅哥]送给您[999]朵玫瑰花
[2010-02-14 20:30:05]您的好友[帅哥]邀请您一起去看电影[]中的数据从数据库中读取,其他描述性文字都是预先根据event_id设定好的1,请问SQL语句应该怎么写?
2,另一种设计方案是将所有消息都储存在history_logs1表中,但是类似邀请去看电影的消息就会有number这个字段是冗余的,这个表储存着1000W条以上的记录
3,这样设计数据库是否合理?如果有好的方案,请指教

解决方案 »

  1.   

    为什么不放在一个表中?user_id  friend_id  event_id  date_event      number
    2     1      10     2010-02-14 10:37:21  999
    2     1      11     2010-02-14 20:30:05  null
      

  2.   

    SELECT * FROM (
    SELECT * FROM history_logs1
    UNION
    SELECT * FROM history_logs2) AS V
    WHERE V.user_id=#####
      

  3.   

    1楼说的方案和我帖子中的另一个方案相同
    2,另一种设计方案是将所有消息都储存在history_logs1表中,但是类似邀请去看电影的消息就会有number这个字段是冗余的,这个表储存着1000W条以上的记录感谢3楼给出的SQL语句我不太清楚目前的两种方案哪个更好一些,效率更高一些