0

我正在尝试将 3 个 MySQL 查询合二为一。

这就是我用来获取我的新闻条目的内容(带有分页):

SELECT A.sid,
       A.title,
       A.time,
       A.bodytext,
       A.author,
       A.url
FROM news A
INNER JOIN
  (SELECT sid
   FROM news
   WHERE approved=1
   ORDER BY sid DESC LIMIT $start, $limit) B USING (sid)

现在,我最近添加了一个评论功能,并希望获得每个“sid”的评论总数

让我感到困惑的部分是我需要将“sid”(来自 news.news)与“page_id”(来自comments.pages)匹配以获取它的唯一“id”。

+----+---------+
| id | page_id |
+----+---------+
|  1 |      87 |
|  2 |      86 |
| 41 |      85 |
|  3 |      84 |
| 13 |      83 |
+----+---------+

现在有了那个唯一的“id”,我需要查询“comments.comments”并将其与“page_id”列匹配并计算(*)它有多少评论 - WHERE is_approved = 1

SELECT page_id,is_approved,count(*) FROM comments WHERE page_id = $id and is_approved = 1;
+---------+-------------+----------+
| page_id | is_approved | count(*) |
+---------+-------------+----------+
|       1 |           1 |        2 |
+---------+-------------+----------+

这可能吗?

4

1 回答 1

1

编辑了我的回复以符合更新后的问题:

SELECT A.sid, A.title, A.time, A.bodytext, A.author, A.url,
       D.page_id, D.num_comments 
FROM news.news A 
INNER JOIN (SELECT sid 
              FROM news 
             WHERE approved=1 
             ORDER BY sid desc 
             LIMIT $start, $limit) B USING (sid)
LEFT JOIN comments.pages C ON A.sid = C.id
LEFT JOIN (SELECT page_id,is_approved,count(*) as num_comments 
             FROM comments.comments 
            WHERE is_approved = 1) D ON C.page_id = D.page_id
于 2013-04-25T03:45:00.603 回答