我的数据库中有一个表TOPICS
,它没有说明哪个用户打开了它。但是,在我的MESSAGES
表中,有一个USER
列,显示哪个用户打开了它。我的问题是:如何为我的TOPICS
表提供一个用户列并获取此信息?
现在,我在每个配置文件中都有用户的最后一条消息,但如上所述,我无法显示主题和主题名称的链接,因为{中没有此类列{1}}。我怎样才能做到这一点?
我用它来获取用户的最后一条消息:
TOPICS
现在我需要为这个主题做同样的事情。
答案 0 :(得分:0)
我不知道我是否了解你的需求,但如果我错了就纠正我......
你可以......
1 - 在用户表'LastTopicId'中添加列
2-使用外键将新表'UserOpenTopic'设为User和Topic,使用日期...这样你就可以进行查询
$lastpost = query("SELECT topic.TopicName FROM UserOpenTopic INNER JOIN topic ON topic.ID = UserOpenTopic.TopicID where UserOpenTopic.userID='$who' Order by date desc");
你应该为主题上的每个用户提供最后一个主题(和整个历史记录)...
答案 1 :(得分:0)
我了解消息始终与主题相关,因此您应该从消息到主题添加n:1关系。根据表模式中的字段类型和命名约定,它应该是这样的:
ALTER TABLE `messages` ADD `topicId` INT NOT NULL;
在这种情况下,关系实际上是作为外键构建到Id当然必须存在于表主题中。存储消息时,您还必须注意还要存储此相关的topicID(或表主题的相应主键)。在提取消息时,您必须加入它:
SELECT message,user FROM messages,topics WHERE messages.topicId = topics.Id AND messages.user='$who' ORDER BY messages.date DESC
请查看mysql文档(CREATE,ALTER和SELECT语法)以获取更详细的示例。使用ORM时,请查看构建和处理 hasMany 关系的示例。