【问题标题】:Mysql Query for a Forum categories/topics论坛类别/主题的Mysql查询
【发布时间】:2019-03-07 16:32:41
【问题描述】:

我正在尝试编写一个论坛网站,我想在主页上显示所有类别,并且对于每个类别,如果存在最后一个主题(如果不存在,我会放置一个按钮,上面写着“创建一个话题”)。 问题是我对 sql 世界很陌生,我无法弄清楚我需要的查询。

所以我的桌子是: Category table

和:Topics table

所以我需要这样的表格:Result table needed

连接两个表的列是Categories中的cat_id和Topics中的topic_cat。

我试过这个查询:

select cat_name,topic_cat, max(topic_date) AS data from topics group by topic_cat

但我不知道如何继续。

对于每个类别,我只加入最新主题(topic_date),如果主题不存在,则字段为空。

提前致谢。

(对不起我的英语不好:/)

【问题讨论】:

  • 你好亚历山德罗。你的英语很不错。但请提供一些您迄今为止尝试过的代码。

标签: mysql


【解决方案1】:

类别表和主题表之间似乎没有链接。
您需要设置一个外键:
例如,主题表中的 catergory_id 或类别表中的 topic_id
取决于应该保存关系的表

或者这可能是一个连接表...

你应该查看一些类似这样的教程来理解这一点:http://www.sql-join.com/

【讨论】:

  • 感谢解答,其实连接两个表的列是Categories中的cat_id,Topics中的topic_cat。我没有具体说明,抱歉。
  • 尝试这样的事情:select * from category c left join topics t on c.cat_id = t.topic_cat AND t.post_date = (SELECT MAX(post_date) FROM topics WHERE topic_cat = t.topic_cat) 如果你想要一个表(类别)中的所有记录,即使它们在相关表(主题)中没有相应的条目,你应该使用左连接
  • 非常感谢,工作就像一个魅力,这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多