2013-04-22 32 views
0

this問題的工廠數量,我問了一下如何展示其位於一個特定的類別(使用次數)的工廠的數量。獲得可以在一個類別

我只想做這樣的事情:

Sidebar 
------ 
Category1 (3) 
Category2 (7) 
Category3 (2) 

其中間數()是其位於一個特定類別的工廠。

我使用一個連接表,以獲得factoryid和類別ID。我把這個表叫做factorycategories。這樣,我可以爲我的工廠指定多個類別。

那麼我如何計算這些工廠的類別ID?

我可以當我使用的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) 

edit2

修正了它。我刪除

foreach($query as $k->$value){ 

這是我的舊功能。

,並添加

foreach($counts as $count){ 

回答

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 
+0

發佈了我的表格結構,如果可以的話,請編輯你的問題 – 2013-04-22 17:20:46

+0

會試試這個! hanks – 2013-04-24 07:42:32

+0

hm我添加了代碼,但我無法得到結果。我必須在我的控制器和視圖中放置什麼? @Kobus – 2013-04-24 07:51:06

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 
+0

這是行不通的,因爲我不知道如何實現這一點。也看看我的問題中的另一個問題。有更好的解釋表格和功能。 – 2013-04-22 12:01:03

+0

請檢查我的更新後的查詢,如果你有像上一個問題那樣的表格 – liyakat 2013-04-22 12:23:56

+0

那麼現在我可以在控制器中添加一個函數,然後在視圖中查看,以便工廠顯示爲我的類別後面的數字? – 2013-04-22 12:28:08

相關問題