PHP,PDO-连接三个表以生成新闻提要的正确方法

PHP,PDO-连接三个表以生成新闻提要的正确方法,php,mysql,pdo,smarty,Php,Mysql,Pdo,Smarty,目前我有三个表,分别包含用户,主题,和注释,注释表有两种不同类型的注释猫注释和狗注释。 我想实现一个新闻提要,在这里我将在主题或评论中显示每个新提交的内容。诀窍是,我使用smarty作为模板引擎,如果我想在新主题开始日期或提交评论之前排序,我只能执行一个foreach循环 我试图这样做,但它多次返回相同的行: $stmt = $db->prepare('SELECT title, username, cat_comments, dog_comments FROM topics, use

目前我有三个表,分别包含
用户
主题
,和
注释
,注释表有两种不同类型的注释
猫注释
狗注释
。 我想实现一个新闻提要,在这里我将在主题或评论中显示每个新提交的内容。诀窍是,我使用
smarty
作为模板引擎,如果我想在新主题开始日期或提交评论之前排序,我只能执行一个
foreach
循环

我试图这样做,但它多次返回相同的行:

$stmt = $db->prepare('SELECT title, username, cat_comments, dog_comments 
FROM topics, 
users, topics, comments WHERE topics.user_id = users.id OR comments.user_id = 
users.id ORDER BY 
topics.date_started OR comments.date_posted DESC');
我的表格结构:

users:
- id
- username

topics:
-topic_id
-title
-user_id (the user that started this topic)
-date_started

comments:
-id
-user_id (user that posted the comment)
-cat_comments
-dog_comments
-date_posted
所以我想以这样的方式加入它,我可以展示每一条新闻:

Username has started topic (title of topic)
date_started
如果此时有人留言,我想显示:

Username left a cat_comment on topic (title of topic)
date_posted


我真的很乐意接受任何建议或帮助!提前谢谢大家

可能是您需要一个带有连接的独特

SELECT distinct t.title, u.username, c.cat_comments, c.dog_comments 
FROM user u 
left join topics t on t.user_id = u.id
left join comments c on c.user_id = u.id
ORDER BY t.date_started DESC, c.date_posted DESC

查找连接语法没有按a或b排序的
语法当你是新手时,连接语法很难学习,目前我正在阅读一本有很多关于它的课程的书,但我几乎不理解其中的一半,我想要一些带示例的初学者教程等等,但是找不到类似的东西这给了我与我的查询相同的结果(多次重复行):(看起来很奇怪…然后更新你的问题…添加适当的数据样本和预期结果..请
SELECT distinct t.title, u.username, c.cat_comments, c.dog_comments 
FROM user u 
left join topics t on t.user_id = u.id
left join comments c on c.user_id = u.id
ORDER BY t.date_started DESC, c.date_posted DESC