2012-05-11 51 views
2

我有这两个表中的一些数据样本。我想抽出每个类别的分类数量。我试了一下,每一个都不正确,我得到了(2)。所以希望有人能帮助我。计数功能()

CREATE TABLE IF NOT EXISTS `categories` (
    `id` int(255) NOT NULL AUTO_INCREMENT, 
    `name` text COLLATE utf8_unicode_ci NOT NULL, 
    `subcategory_id` int(2) NOT NULL DEFAULT '0', 
    `parent_id` int(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=27 ; 

-- 
-- Dumping data for table `categories` 
-- 

INSERT INTO `categories` (`id`, `name`, `subcategory_id`, `parent_id`) VALUES 
(1, 'Announcements', 0, 0), 
(2, 'Employment', 0, 0), 
(3, 'Items For Sale', 0, 0), 
(4, 'Services', 0, 0), 
(5, 'Garage Sales', 0, 0), 
(6, 'Automobiles', 0, 0), 
(7, 'Announcement1', 1, 1), 
(8, 'Announcement2', 1, 1), 

-- 
-- Table structure for table `classifieds` 
-- 

CREATE TABLE IF NOT EXISTS `classifieds` (
    `classified_id` int(255) NOT NULL AUTO_INCREMENT, 
    `title` text COLLATE utf8_unicode_ci NOT NULL, 
    `description` text COLLATE utf8_unicode_ci NOT NULL, 
    `category_id` int(10) NOT NULL, 
    `name` text COLLATE utf8_unicode_ci NOT NULL, 
    `authorized` int(10) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`adid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=177 ; 

-- 
-- Dumping data for table `classifieds` 
-- 

INSERT INTO `classifieds` (`classified_id`, `title`, `description`, `category_id`, `name`, `authorized`) VALUES 
(1, 'Test Classified', 'Here is the First Test classified listing.', 1, 1); 

INSERT INTO `classifieds` (`classified_id`, `title`, `description`, `category_id`, `name`, `authorized`) VALUES 
(2, 'GMC For Sell', 'Looks like new 1979 GMC.', 6, 1); 

这里

$query = "SELECT category_id, COUNT(title) FROM classifieds GROUP BY category_id"; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_array($result) 
$num_items_in_category = $row['COUNT(title)']; 
echo "<><a href='category-".$row['id'].".php' >".$row['name'].$num_items_in_category."</a></li>"; 

感谢

+1

首先,你应该给的别名'COUNT(标题)'。第二:'$ row ['id']'和'$ row ['name']'从哪里来? –

+0

我试过这样:$ query =“SELECT category_id,COUNT(title)as'total'FROM classifieds GROUP BY category_id”;但没有运气 – Rocks

+2

附注:您的'INSERT INTO classifieds'语句没有匹配的参数数量,看起来像'name'缺失。 – Kaivosukeltaja

回答

2

更改SQL一点,遍历的结果?

$query = "SELECT c.id, c.name, 
       COUNT(cl.category_id) AS num_items_in_category 
       FROM category_id c 
       LEFT JOIN aclassifieds cl ON cl.category_id=c.id 
       GROUP BY c.id"; 
$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) { 
    echo "<li><a href='category-".$row['id'].".php' >".$row['name'].$row['num_items_in_category']."</."</a></li>"; 
} 
+0

我感谢您的帮助,但我没有一个名为category_id或aclassifieds的表。 – Rocks

+0

如果您将'category_id'更改为'categories'和'aclassifieds'''classifieds',那该怎么办? –

+1

改变了一下,它的作品完美:)感谢你们所有人 – Rocks

0

万一有人想以让我的这个:

enter $query = "SELECT c.id, c.name, 
      COUNT(cl.title) AS num_items_in_category 
      FROM categories c 
      LEFT JOIN classifieds cl ON cl.category_id=c.id 
      GROUP BY c.id"; 
    $result = mysql_query($query) or die(mysql_error()); 

而($行= mysql_fetch_array($结果)){ 回声 “

  • ” $行[ '名称']。 。$ row ['num_items_in_category']。“
  • ”; } 这里 感谢