MYSQL JOIN查询结果

时间:2014-02-05 14:33:27

标签: mysql

我有一个很久以前建立的旧论坛,我在网站上变成了一个只读部分。作为编程练习,尽管 可怕的 数据库设计,我试图减少使用的代码量。

我想要实现的目标是在回复页面上:一个查询显示第一篇文章(存储在'主题'表格中),然后是其他帖子来自&#39 ;回复表。

简陋的表格:

'replies'
topicID
posted_by
body
date_posted

'topics'
topicID
subject
body
posted_by
date_posted

我想要获得的表格是:

来自'主题的初始帖子'然后是按date_posted排序的回复(最早的第一个)。

这里是我一直在摆弄的问题:

SELECT DISTINCT
r.body, r.posted_by, r.date_posted, t.body, t.date_posted, t.posted_by, t.subject
FROM
replies r
LEFT JOIN topics t
    ON r.topicID = t.topicID
WHERE
r.topicID = 2372
ORDER BY
t.posted_by DESC,
r.date_posted DESC

有没有人有任何想法如何调整这个以获得我想要的方案?

1 个答案:

答案 0 :(得分:1)

UNION查询应该提供您正在寻找的数据:

SELECT topicID, subject, body, posted_by, date_posted
FROM topics
WHERE topicID = 2372
UNION
SELECT r.topicID, t.subject, r.body, r.posted_by, r.date_posted
FROM replies r
    INNER JOIN topics t ON r.topicID = t.topicID
WHERE t.topicID = 2372
ORDER BY r.date_posted DESC;