gpt4 book ai didi

php - 从具有 3 个唯一 ID 的表中获取值(冗余 sql 查询)

转载 作者:行者123 更新时间:2023-11-29 10:33:58 25 4
gpt4 key购买 nike

$query = "SELECT COUNT(id) FROM complaint WHERE ID_complntCategory = ?";

$complntCategory = $database->prepare($query);
try {
$complntCategory->execute(array());
$complntCategory->setFetchMode(PDO::FETCH_ASSOC);

foreach ($complntCategory as $key) {
$totaalM = $key['1'];
$totaalV = $key['2'];
$totaalG = $key['3'];
}
}
catch(PDOException $e) {
echo "Error";
}

上面你可以看到我的 PHP 代码,这是我正在尝试做的事情:

我试图将表“complaint”中的行数获取到 3 个不同的变量(totaalM、totaalV 和totaalG)。 totaalM 变量应包含“WHERE ID_complntCategory = 1”的行数。

对于其他变量,“ID_complntCategory”应为 2 和 3(“ID_complntCategory”为 1、2 或 3)

应该有一种方法可以让我不必编写 3 个查询,对吗?

我显然以错误的方式处理这个问题,并且我不确定应该如何解决这个问题......

最佳答案

你想要做的事情被称为pivot行到列中,但是MySQL没有像其他RDBMS那样的数据透视表运算符,但是你可以在一个查询中使用像这样的case表达式:

SELECT 
SUM(CASE WHEN ID_complntCategory = 1 THEN 1 ELSE 0 END) AS totaalM,
SUM(CASE WHEN ID_complntCategory = 2 THEN 1 ELSE 0 END) AS totaalV,
SUM(CASE WHEN ID_complntCategory = 3 THEN 1 ELSE 0 END) AS totaalG,
COUNT(Id) AS Total
FROM complaint;

或者你可以像这样缩短它:

SELECT 
SUM(ID_complntCategory = 1) AS totaalM,
SUM(ID_complntCategory = 2) AS totaalV,
SUM(ID_complntCategory = 3) AS totaalG,
COUNT(Id) AS Total
FROM complaint;

Demo

这会给你这样的东西:

| totaalM | totaalV | totaalG | Total |
|---------|---------|---------|-------|
| 2 | 3 | 1 | 7 |

关于php - 从具有 3 个唯一 ID 的表中获取值(冗余 sql 查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com