php - 在单个 mysqli 查询中获得两个计数并执行计算
问题描述
我想要:
计算有多少行具有列 date = $date
第二次计算列日期 = $date AND 列结果 = word 'win' 的行数
然后将第一个计数值除以第二个并回显结果/值。
该值返回为 1 - 当行数 = 3 时,结果列中 Win = 2 的结果应为 1.5。
当我什至做 echo "".$testrow['win_count'] 。""; 结果仍然是 3,这是错误的,这是总行数的结果。
<?php
ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE);
$connection = mysqli_connect("*****", "*****", "*****", "*****");
if (!$connection) {
die("Database connection failed: " . mysqli_connect_error());
}
$Date = '2019-03-11';
$Win = 'Win';
$testsql="
SELECT
count(*) AS bet_count,
count(IF(result ='$Win', 1, 0)) AS win_count
FROM bets WHERE betDate = '$Date' GROUP BY betDate
";
$testresult = mysqli_query($connection, $testsql);
while ($testrow = mysqli_fetch_assoc($testresult))
{
echo "<tr>";
echo "<td class='text-center'>".($testrow['bet_count']/$testrow['win_count']). "</td>";
echo "</tr>";
}
mysqli_close($connection);
?>
解决方案
这个....
count(IF(result = '$Win', 1, 0)) AS win_count
应该....
count(IF(result = '$Win', 1, NULL)) AS win_count
或者...
count(CASE WHEN result = '$Win' THEN 1 END)) AS win_count
另外,我建议您阅读 MySQL COUNT() AND SUM(),以便您了解为什么我在 COUNT() 中包含的 IF() 中使用 NULL 而不是 0,以及为什么我只是从示例 CASE 中删除了 ELSE NULL COUNT() 中的语句....
推荐阅读
- python - Tkinter 标签不会出现在 Labelframe 中
- android - 我如何在这个可组合函数中传递图标?这样我就可以重复使用它
- python - asyncio.Task 中的“async with”不起作用
- sass - gmake 在目标上发出“权限被拒绝”错误。为什么?
- javascript - 概念:异步 - 用 Promise 等待返回结果{
} - android - 无法构建 iOS 项目。ReactNative Cocoapods (M1 Mac)
- javascript - 传递的数组数据作为 Promise 发送我如何访问它
- c# - 在 StimulSoft 中的每页末尾强制剪纸
- bootstrap-4 - bootstrap4:在这种情况下使用 row 和 col 的正确方法
- semaphore - 信号量会导致竞争条件吗?