求助这样的查询如何写?
请问这样的表如何写:article表:放的是文章内容
id titlecontent
1 测试1测试1内容
2 测试2测试2内容
comment表:放的是文章的评论,aid是文章的id
idaidcontent
1 1 文章1的评论1
2 1 文章1的评论2
3 2 文章2的评论1
4 2 文章2的评论2
aboutarticle表:放的是关于文章的点击次数aid代表文章的id
idaidhits
1 1 50
2 2 100
现在我想做一个像图中一样的文章列表,内容分别显示:标题、内容、评论条数、点击次数。
我已经用下面的代码查出了文件的标题、内容、点击次数、如何才能同时查出评论条数呢?
//取得文章列表
function get_article_list(){
$this->db->select('content.id,cid,anthor,title,preview,user.id,user.username,content.data,category.category');
$this->db->from('content');
$this->db->join('category','category.id=content.cid','left');
$this->db->join('user','user.id=content.anthor','left');
//$this->db->join('comment','content.id=comment.aid','left');
$query = $this->db->get();
return $query->result();
}
}
$sql="select count(*) as cnt
from comment where aid=?";
$this->db->query($sql,array($aid));
foreach($res->result_array() as $row)
{
return $row['cnt'];
} 用无敌的join 本帖最后由 zhangcjl 于 2010-10-15 02:37 编辑
sorry~~~我只是想坐等回答,有点高兴,我也遇到这样的问题~~呵呵~~ 假设有两个表a, b。结构分别与你前两个表结构相同。
SELECT a. * , count( b.id )
FROM a
LEFT JOIN b ON a.id = b.aid
GROUP BY b.aid
以上代码自己测试下,我没有做实际测试,应该问题不大。
没有放第三个表的原因是,我比较懒。看到你第一个表与第三个表之间的关系是一对一的,所以处理起来非常简单。
特别注意:这里务必要制定成LEFT JOIN,而非默认的INNER JOIN。因为有些文章可能没有任何评论。 标题、内容、评论条数、点击次数 。简单的两表连接。 我还是觉得不需要多表查询的
你可以用用这个
因为标题、内容、点击次数 可以单表直接搜索到、
按照你全的写法
然后呢。你可以利用你的模型层
模型层里面写这样一个方法
function get_comment_num($post_id)
{
$sql="select count(*) as cnt
from comment where aid=?";
$this->db->query($sql,array($post_id));
foreach($res->result_array() as $row)
{
return $row['cnt'];
}
}
之后,你的视图层直接这么来
逐行的搞
foreach($posts as $post)
{
echo $post->post_id();
echo $post->post_title();
echo $post->post_content();
echo $post->get_comment_num($post->post_id());
//....and so on
}
这样子用单表就可以搞出来。
求助这样的查询如何写?
你的post id从哪来的?如果是新闻列表那每条新闻都要单独做一次查询,对吗?在不考虑分页的情况下,你的方案需要做N + 1 次查询。N等于新闻条数。
现在,你觉得多表查询还有必要吗?
- 发送自我的 iPhone 大板凳应用 用了MVC框架之后发现嵌套的SQL语句越来越少了。
页:
[1]