Php 如何从一列中计算具有不同值的行
我有一个问题,要从一列中用不同的值计算行数,这是我的数据库和查询Php 如何从一列中计算具有不同值的行,php,mysql,Php,Mysql,我有一个问题,要从一列中用不同的值计算行数,这是我的数据库和查询 $host = 'localhost'; $db = 'cbt'; $user = 'root'; $pass = ''; $dsn = "mysql:host=$host;dbname=$db"; $pdo = new PDO($dsn, $user, $pass); $matematika = 'MTK'; $soal_mtk = $pdo->prepare("select count(*) from cbt.d
$host = 'localhost';
$db = 'cbt';
$user = 'root';
$pass = '';
$dsn = "mysql:host=$host;dbname=$db";
$pdo = new PDO($dsn, $user, $pass);
$matematika = 'MTK';
$soal_mtk = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :mtk");
$soal_mtk->bindParam(':mtk', $matematika, PDO::PARAM_STR, 12);
$soal_mtk->execute();
$mtk = $soal_mtk->fetchColumn();
$fisika = 'FIS';
$soal_fis = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :fis");
$soal_fis->bindParam(':fis', $fisika, PDO::PARAM_STR, 12);
$soal_fis->execute();
$fis = $soal_fis->fetchColumn();
$kimia = 'KIM';
$soal_kim = $pdo->prepare("select count(*) from cbt.data_ujian where data_ujian.id_mapel = :kim");
$soal_kim->bindParam(':kim', $kimia, PDO::PARAM_STR, 12);
$soal_kim->execute();
$kim = $soal_kim->fetchColumn();
我可以用一个查询来计算所有这些吗??如果需要更多信息,请告诉我。非常感谢您。如果我没听错,GROUP BY子句应该满足您的要求:
SELECT count(*), id_mapel FROM cbt.data_ujian GROUP BY id_mapel
是的,您可以,您需要使用WHERE条件。像这样,
SELECT count(*),
data_ujian.id_mapel
FROM cbt.data_ujian
WHERE (data_ujian.id_mapel = :mtk
OR data_ujian.id_mapel = :fis
OR data_ujian.id_mapel = :kim)
GROUP BY data_ujian.id_mapel
上述查询将按
id\u mapel
列对结果进行分组,并给出每个类别的计数。尝试以下查询-
SELECT Sum(data_ujian.id_mapel = 'mtk') AS 'mtk',
Sum(data_ujian.id_mapel = 'fis') AS 'fis',
Sum(data_ujian.id_mapel = 'kim') AS 'kim',
FROM cbt.data_ujian;
cbt.data\u ujian和data\u user之间有关系吗?没有。我只想用一个问题数一数mtk、fis和kim,那么你问题顶部的表格创建语句有什么意义?!?我把它贴在我的笔记本上。我只是不明白为什么。看起来结果是从id\u mapel向后的,它是从上一个id\u mapel回音的,或者更确切地说,我取错了,但还是要谢谢你。请看MySQL的IN()
构造。是的,我们也可以使用IN()
你能解释一下如何取id\u mapel并计数吗?我使用foreach,但它只打印了count或id\u mapel。从上面的查询中得到的结果将是多维数组,它将有两个键,分别是该组的group\u name(id\u mapel)
和count
。您可以迭代该数组并显示每个组的计数。