1

我有一个文章数据库,按类别存储。对于我的主页,我想从每个类别中获取一篇文章(我不在乎哪个)。但是,有些文章被交叉发布到多个类别,所以它们出现了两次。

我有一个名为 tblReview 的表,其中包含文章字段(reviewID、headline、reviewText)和一个名为 tblWebsiteContent 的表,它告诉网站文章所在的类别(id、reviewID、categoryID),最后还有一个名为 tblCategories 的表(categoryID、categoryName ) 存储类别。

我的查询基本上加入了这些表并使用 GROUP BY tblCategory.categoryID。如果我尝试将“tblReview.reviewID”添加到 GROUP BY 语句中,我最终会得到数百篇文章,而不是 22 篇(我拥有的类别数)。

我觉得这需要一个子查询,但我的测试工作没有奏效(不确定哪个查询需要包含我的联接/字段列表/where 子句等)。

谢谢!

马特

4

3 回答 3

0

尝试使用SELECT DISTINCT. (这仅在您SELECT仅提取文章 ID 时才有效。)

于 2009-09-21T15:02:24.863 回答
0

选择不同的评论 ID

于 2009-09-21T15:06:01.063 回答
0
SELECT T.categoryName, tR.headline, tR.reviewText
FROM (
    SELECT tC.categoryName, MAX(tR1.reviewID) reviewID
    FROM tblReview tR1 join tblWebsiteContent tWC on tR1.reviewID = tWC.reviewID
                      join tblCategory tC on tC.categoryID = tWC.categoryID
    GROUP BY tC.categoryName) T JOIN
    tblReview.tR on tR.reviewID = T.reviewID

此查询将为每个类别选择与该类别的 Max reviewId 对应的文章标题(您说“我不在乎哪个”)

于 2009-09-21T15:09:27.457 回答