Hello All Guru在那里。
这可能是最简单的事情,但我很难找到答案。
基本上,我有两个表,结构如下:
表1:
categories_docs
| CATID | parent | name |
| 1 | 0 | Cars |
| 2 | 0 | Bikes |
| 3 | 1 | VW |
| 4 | 1 | Toyota |
| 5 | 2 | Honda |
| 6 | 2 | Yamaha |
表2:
docs
| DOCID | categories | title |
| 1 | 3 | GTI User Manual |
| 2 | 3 | Polo GTi Performance Tweaks |
| 3 | 4 | Hilux 4x4 Cheat Guide |
| 4 | 4 | Supra TuneUp |
| 5 | 5 | CBR600 Service Manual |
| 6 | 5 | CBR1000RR Service Manual |
基本上,他们应该输出:
汽车(4)
大众(2)
TOYOTA(2)
自行车(2)
本田(1)
雅马哈(0)
目前我的列表视图正常运行,但我很难让它计算总数。
查询列出类别:
function insert_get_categories($a)
{
global $config,$conn;
$query = "select * from categories_docs where parent='0' order by name asc";
$results = $conn->execute($query);
$returnthis = $results->getrows();
return $returnthis;
}
TPL将呈现PHP :(使用Smarty)
{insert name=get_categories assign=listcats}
{section name=o loop=$listcats}
<div class="column {if $smarty.section.o.iteration % 6 == 0}last{/if}"><br>
<h3><a href="{$baseurl}/subcategory.php?id={$listcats[o].CATID}"> {$listcats[o].name|stripslashes}</a></h3>
</div>
{/section}
非常感谢任何帮助!
先谢谢。
答案 0 :(得分:1)
我不是大师,但也许这对你有所帮助:
这个sql给出了直接类别的总数:
select CATID,parent,name,count(*) from categories_docs inner join docs on categories=CATID group by CATID;
这个给出了第一级父类别的总数:
select count(*),cd2.name from categories_docs cd1 inner join docs on categories=CATID join categories_docs cd2 on cd2.CATID=cd1.parent group by parent
如果你想向所有人展示他们使用UNION ALL
select name,IF(isnull(DOCID) and parent !=0, 0, count(*)) as amount from categories_docs left join docs on categories=CATID where parent!=0 group by CATID
UNION ALL
select cd2.name,IF(isnull(DOCID), 0, count(*)) from categories_docs cd1 inner join docs on categories=CATID join categories_docs cd2 on cd2.CATID=cd1.parent group by cd1.parent
编辑:我对最后一个sql进行了一些更改,以显示没有元素的子类别
答案 1 :(得分:0)
我使用的查询是:
SELECT *,IFNULL(COUNT(D.CATEGORIES),0) as total FROM categories_docs AS CD LEFT JOIN docs AS D ON D.categories=CD.CATID WHERE CD.PARENT = 0 GROUP BY CD.CATID
感谢你帮助Melon !!