在this问题中,我询问了如何显示位于特定类别的工厂数量(使用计数)。
我只想做这样的事情:
Sidebar
------
Category1 (3)
Category2 (7)
Category3 (2)
其中()之间的数字是位于特定类别的工厂。
我使用连接表来获取factoryid和categoryid。我打电话给这个工厂类别。通过这种方式,我可以为我的工厂指定多个类别。
那么如何计算类别为id的工厂?
当我在url中使用id时,我可以使用它,但在索引页面上,我的url中没有id,因此无效。
我的表结构:
factorycategories
-----------------
idfactorycategories
idfactories
idcategories
factories
---------
idfactories
factoryname
adress
postcode
country
etc etc..
categories
----------
idcategories
category
我目前的代码:
工厂模型:
function bedrijf_categorie()
{
$sql = "
SELECT count(b.idbedrijven) as ItemCount, c.Categorie as Categorie
FROM `bedrijven` b
INNER JOIN `bedrijfcategorieen` bc
ON bc.idbedrijven = b.idbedrijven
INNER JOIN `categorieen` c
ON c.idcategorieen = bc.idcategorieen
GROUP BY c.idcategorieen
";
$query = $this->db->query($sql);
return $query->result();
}
function index()
{
$data['counts'] = $this->bedrijven_model->bedrijf_categorie();
}
在我的观点中:
print_r($counts)
修好了。我删了
foreach($query as $k->$value){
这是我以前的功能。
并添加了
foreach($counts as $count){
答案 0 :(得分:0)
你只是在找这样的东西
select count(Factorycategories.idfactorycategories) as total , Factorycategories.idcategories, Categories.Category from Factorycategories
LEFT JOIN Categories
ON Factorycategories.idcategories=Categories.idcategories
group by Factorycategories.idcategories
idfactorycategories idcategories idfactories
1 1 1
2 1 2
3 2 3
4 3 4
5 1 5
您只需要使用左连接或使用样本连接来获取类别名称,以从类别表
中打印类别名称<强>输出强>
total idcategories
3 1
1 2
1 3
答案 1 :(得分:0)
在您的模型中,您需要调整查询。我不确定你的表结构是什么样的,所以我使用我自己的例子:
SELECT count(c.id) as ItemCount, p.shortname as Page
FROM `icms3_content` c
INNER JOIN `icms3_page_content` pc
ON pc.content_id = c.id
INNER JOIN `icms3_page` p
ON p.id = pc.page_id
GROUP BY p.id
这给我的结果如下:
ItemCount | Page
===========================
2 | home
1 | typography
1 | responsive
这是正确的结果,因为主页有两个内容,另外两个页面只有一个项目。
以下是我的表结构:
CREATE TABLE IF NOT EXISTS `icms3_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`teaser` varchar(255) NOT NULL,
`content` longtext NOT NULL,
`author` varchar(64) NOT NULL,
`active` enum('Yes','No') NOT NULL,
`publish_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`unpublish_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `icms3_page` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shortname` varchar(64) NOT NULL,
`image` varchar(255) NOT NULL,
`title` varchar(64) NOT NULL,
`keywords` varchar(255) NOT NULL,
`description` varchar(320) NOT NULL,
`author` varchar(128) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `icms3_page_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page_id` int(11) NOT NULL,
`content_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
编辑:您的查询将使用您发布的表格更改为以下内容:
SELECT count(f.id) as ItemCount, c.category as Category
FROM `factories` f
INNER JOIN `factorycategories` fc
ON fc.idfactories = f.idfactories
INNER JOIN `categories` c
ON c.idcategories = fc.idcategories
GROUP BY c.idcategories