关于调用php中每个表中有多少个类别

关于调用php中每个表中有多少个类别,php,mysql,Php,Mysql,我正在用php创建一个学校类型的CMS系统,以获得更多经验。 我创建了一个schedule.php页面,其中列出了学校类别,例如: 会计 生物 数学 计算机科学 我想在数据库中的分类Accounting(2)旁边添加一个数字,因为有两个Accounting类。例如,计算机科学有10门课,所以应该是计算机科学(10) 我的代码只显示科目的名称,而不显示所教的课程数 这是我的密码: <?php include('connect.php'); if(!isset($_GET['id']))

我正在用php创建一个学校类型的CMS系统,以获得更多经验。 我创建了一个schedule.php页面,其中列出了学校类别,例如:

会计 生物 数学 计算机科学

我想在数据库中的分类Accounting(2)旁边添加一个数字,因为有两个Accounting类。例如,计算机科学有10门课,所以应该是计算机科学(10)

我的代码只显示科目的名称,而不显示所教的课程数

这是我的密码:

<?php


include('connect.php');

if(!isset($_GET['id']))
{
    ?>
    <table border="1" width="15%" height="137">
<tr>
    <td><?php

    //$query1 = mysql_query("SELECT * FROM categories ORDER BY category_name") or die(mysql_error());


    $query1 = mysql_query("SELECT CONCAT(a.category_name, ' (', COUNT(b.category_id), ')') AS category
?>


谢谢

最好使用带有join和group by子句的查询。可能是这样的:

SELECT 
    ca.*, 
    COUNT(cl.id) AS class_count 
FROM 
    categories ca 
    LEFT JOIN classes cl ON cl.category_id = ca.id 
GROUP BY ca.id

假设您的模式符合以下几点:

+---------------+     +--------------------+
| categories    |     | classes            |
+---------------+     +--------------------+
| ID            |     | id                 |
| category_name |     | category_id        |
| etc..         |     | etc...             |
+---------------+     +--------------------+
classes.category\u id
是引用
categories.id
的外键时,有一个非常简单的解决方案:

SELECT a.ID, CONCAT(a.category_name, ' (', COUNT(b.category_id), ')') AS category
FROM categories a
LEFT JOIN classes b ON a.ID = b.category_id
GROUP BY a.ID, a.category_name
这将把类的数量连接到每个类别。前

Biology (4)
Computer Science (10)
etc...
您只需在PHP中引用查询的
category
列即可

while($row = mysql_fetch_object($query1))
{
    print "<a href='schedule.php?id=" . $row->ID .  "'>" . $row->category . "</a><br/>";
}
while($row=mysql\u fetch\u object($query1))
{
打印“
”; }
在不了解数据库模式的情况下,这个问题很难回答。我的数据库中有两个表。类别和类别表。在分类表中,我有id 1->会计2->计算机科学。。。在我的课程表中,我有类别id、类别名称->计算机科学101、102等。。。我如何调用MYSQL查询来显示计算机科学(10)谢谢。@Masoman请发布您的数据库模式(表和列的名称),以便我们能给您一个准确的答案。classes表链接到categories表的列是什么?建议您将两个表连接起来,按类别分组或类别ID,以及COUNTmy categories表ID int(11),category_name varchar(75)。我的classes表我有category_id int(11),class_name var_char(75),这是你的意思吗?谢谢。嗨,Zane,我试过使用上面的查询,但是没有用。我在试着理解这个OK,你的权利它起作用了它列出了计算机科学(10)会计(2)等等。。。然而,我在第24行的C:\wamp\www\gcc\schedule.php中得到了这些奇怪的错误stdClass::$id。谢谢。@Masoman,你能发布你的全部代码吗?是否要检索除类别的id、名称和计数之外的其他列?如何在此处发布php格式的代码?所以我会给你看我的全部code@Masoman,我不久前编辑了我的答案,以包含您缺少的“ID”列。使用更新的查询。在while循环中也使用更新的代码。
SELECT a.ID, CONCAT(a.category_name, ' (', COUNT(b.category_id), ')') AS category
FROM categories a
LEFT JOIN classes b ON a.ID = b.category_id
GROUP BY a.ID, a.category_name
Biology (4)
Computer Science (10)
etc...
while($row = mysql_fetch_object($query1))
{
    print "<a href='schedule.php?id=" . $row->ID .  "'>" . $row->category . "</a><br/>";
}