0

我的数据库中有一个表TOPICS,它没有说明哪个用户打开了它。但是,在我的MESSAGES表格中,有一USER列显示哪个用户打开了它。我的问题是:我怎样才能给我的TOPICS表提供一个包含用户的列并获取这些信息?

现在,我在每个配置文件中都有用户的最后一条消息,但如前所述,我无法显示主题和主题名称的链接,因为TOPICS. 我怎样才能做到这一点?

我用它来获取用户的最后一条消息,它有效:

$lastpost = execute_scalar("SELECT message FROM messages where messages.user='$who' Order by date desc");

现在我需要为这个主题做同样的事情。

4

2 回答 2

0

我不知道我是否理解您的需求,但如果我错了,请纠正我......

你可以..

1 - 在用户表“LastTopicId”中添加列

2-使用用户和主题的外键创建新表'UserOpenTopic',日期......所以你可以做查询

$lastpost = query("SELECT topic.TopicName FROM UserOpenTopic INNER JOIN topic ON topic.ID = UserOpenTopic.TopicID where UserOpenTopic.userID='$who' Order by date desc");

而且您应该为每个主题的用户提供最后一个主题(和整个历史)......

于 2012-10-11T08:53:33.877 回答
0

我了解消息始终与主题相关,因此您应该添加从消息主题的:1 关系。根据表模式中的字段类型和命名约定,它应该是这样的:

ALTER TABLE `messages` ADD `topicId` INT NOT NULL;

在这种情况下,关系实际上是作为 Id 的外键构建的,它当然必须存在于您的表主题中。存储消息时,您还必须注意存储此相关主题 ID(或表主题的相应主键)。获取消息时,您必须加入它:

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关系的示例。

于 2012-10-11T08:55:18.457 回答