【问题标题】:Count comments to each recension?计算每次修订的评论?
【发布时间】:2012-11-03 07:46:05
【问题描述】:

我需要有人帮我解决这个问题。今天我的脑袋不想思考。

所以,我有一个名为“recensions”的表,还有一个名为“cmets”的表。在每个表中,我都有一个名为“amne_id”的列。这样我就可以将 cmets 连接到正确的 recension。

现在,在我的第一页上,我只需使用代码获取所有的修订:

$rec = $this->db->get('recensions');

我想要的是计算每个 recension 有多少 cmets。但我不知道怎么做。我想我也许应该使用 JOIN 和 num_rows()?

如果你不明白,请询问,以便我更好地解释。

祝你有美好的一天!

【问题讨论】:

  • 我不知道它在 Codeigniter 中会怎样,但问题是 JOIN LIKE 'SELECT count(rec.amne_id) as tot_cmets from recensions as rec JOIN cmets as com ON rec.amne_id = com .amne_id'

标签: php mysql codeigniter


【解决方案1】:
$this->db->select('COUNT(*) as count, recensions.anme_id as recension_id')
->from('recensions')
->join('comments','recensions.anme_id = comments.anme_id','left')
->group_by('anme_id');
$result = $this->db->get();

应该给你recensions id和那个id的评论数。

然后循环:

foreach($result->result() as $row){
    echo "Recension id $row->recension_id has $row->count comments<br />";
}

【讨论】:

  • 我应该替换“$rec = $this->db->get('recensions');”用你刚刚写的?
  • 由你决定。如果您不想要所有结果,请替换它。如果你想保留所有的recensions,不要替换它。我发布的内容只会为您提供一个带有 recension.anme_id 的对象以及该 anme_id 的 cmets 计数。
  • 那我应该如何打印结果呢?使用 foreach 循环还是?对不起,我的知识很少,我是 Codeigniter 的新手 :)
  • 是的。只需使用标准的 Active Record 东西:codeigniter.com/user_guide/database/examples.html 我用一个使用别名的示例更新了答案。
  • 哦,谢谢!只是一个快速的问题:“$row->count”中的“count”是什么?我在任何地方都看不到那个变量?
【解决方案2】:

像这样??

$sql = mysql_query("SELECT * FROM recensions");
while($row = mysql_fetch_array($sql)){
$amne_id = $row{"amne_id"};
$sql2 = mysql_query("SELECT * FROM comments WHERE amne_id='$amne_id'");
$total_comments = mysql_num_rows($sql2);
echo $total_comments;
}

【讨论】:

    【解决方案3】:

    我不知道您正在使用的数据库连接器,但是在纯 SQL 中(假设 connection recensions.id=comments.anme_id 连接),试试这个:

    SELECT COUNT(comments.id), anme_id
    FROM recensions
    LEFT JOIN comments on comments.anme_id=recensions.id
    GROUP BY anme_id
    

    【讨论】:

    • 嗯,当我尝试这段代码时,我得到了一个错误。 “您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 '*) 附近使用的正确语法”
    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多