代码之家  ›  专栏  ›  技术社区  ›  Dorjan

加入;请只录一张!

  •  0
  • Dorjan  · 技术社区  · 14 年前

    SELECT bl.`blog_id`, count(bc.`blog_id`) AS 'comment_count', t.`added`
    FROM blog_link bl
    JOIN type t ON t.`id` = bl.`blog_id`
    JOIN blog_comments bc ON (`item_id` = bl.`blog_id` AND `blog_type` = '[$type]')
    WHERE bl.`section_id` = [$section_id] AND bl.`blog_type` = '[$type]'
    GROUP BY bl.`blog_id`
    ORDER BY `added` DESC
    LIMIT 0,20
    

    3 回复  |  直到 14 年前
        1
  •  1
  •   Brent Baisley    14 年前

    似乎您只想获得一个不同的计数,所以只需在计数中添加不同的。尽管您需要为每个注释添加某种唯一的标识符。理想情况下,每个评论都有一个唯一的ID(即自动递增),但是如果没有,您可能会使用blog_id+author+timestamp。

    SELECT bl.`blog_id`, count(DISTINCT CONCANT(bc.`blog_id`,bc.`author`,bc.`timestamp`) AS 'comment_count',...
    

    这会给你一个独特的评论计数。

        2
  •  0
  •   Adrian J. Moreno    14 年前

    我认为你需要先得到“x”类型的博客,然后为这些博客做一些评论。

    SELECT 
    EXPR1.blog_id, 
    count(bc.`blog_id`) AS 'comment_count'
    

    从 ( 选择 BL. blog_id ,T。 added 从 布洛克林肯大道 加入 在T上键入T。 id = BL. 布洛吉特

    WHERE 
        bl.`section_id` = [$section_id] 
        AND 
        bl.`blog_type` = '[$type]'
    GROUP BY 
        bl.`blog_id`
    ORDER BY 
        `added` DESC
    LIMIT 0,20
    

    )作为ExPR1 加入 博客评论 ( 公元前。 item_id = EXPR1。 布洛吉特 )

        3
  •  0
  •   Patrick    14 年前

    未测试:

    SELECT bl.`blog_id`, count(bc.`blog_id`) AS 'comment_count', t.`added`
    FROM
    (
      SELECT DISTINCT blog_id, blog_type 
      FROM blog_link
      WHERE
       `section_id` = [$section_id] 
       AND `blog_type` = '[$type]'
    ) bl
    INNER JOIN blog_comments bc ON (
        bc.`item_id` = bl.`blog_id` AND bc.`blog_type` = bl.`blog_type`
    )
    INNER JOIN type t ON t.`id` = bl.`blog_id`
    GROUP BY bl.`blog_id`
    ORDER BY t.`added` DESC
    LIMIT 0,20