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