如何解决从使用 union
我有一个查询,它使用联合来显示每个请求类别的总数。我试图找到一种方法来添加所有 6 个类别的总数并在用户页面上显示它们。我正在使用 ajax 在它们进入或完成时重新加载总数。我得到的答复是将每个类别连续显示在一起,而不是总数。
$sql = "SELECT 'SKU Requests: ' AS skus,COUNT(*),'/admin/sku2','/skuRequest/myRequests.php' AS sLink FROM sku_request WHERE completed = 0
UNION
SELECT 'Sku Update:' AS updates,'/admin/sku/skuUpdate.php','#' AS sLink FROM sku_update WHERE completed = 0
UNION
SELECT 'RMA Requests: ' AS rma,'/admin/rma','/rma/yourRequests.php' AS sLink FROM rma_submissions WHERE rma_number = 'Pending'
UNION
SELECT 'Termination Requests: ' AS idT,'/admin/idTerminations','/idTermination/yourIdTermRequests.php' AS sLink FROM idTermination WHERE completed = 0
UNION
SELECT 'ID Requests: ' AS ids,'/admin/idRequest2','/idRequest/yourIdRequests.php' AS sLink FROM id_request WHERE ssoid IS NULL
UNION
SELECT 'TDA: ' AS tda,'/admin/tda','/tda' AS sLink FROM tda_request WHERE completed = 0
";
$stmt = $conn->prepare($sql);
$stmt->bindColumn(1,$ID);
$stmt->bindColumn(2,$count);
$stmt->bindColumn(3,$link);
$stmt->bindColumn(4,$link2);
$stmt->execute();
$numRows = $stmt->rowCount();
if (isset($numRows)) {
}
while ($stmt->fetch()) {
$reqTotals+= $count;
echo $reqTotals;
}
当为空时,回声的结果是 000000
。如果一个请求进来,假设 ID 终止,它会显示 000110
,而它应该只显示 1。TDA 请求显示 000001
。
我怎样才能把这些加起来?我曾尝试使用 +=
但这似乎不起作用。奇怪的是,如果我将结果放入会话中,它就可以正常工作。
这有效并显示正确的数字。但我不喜欢在会话中使用它。
while ($stmt->fetch()) {
if($count > 0){
$class = "badge badge-pill badge-danger";
}else{$class = "badge badge-pill badge-success";}
if($_SESSION['role'] == 'Admin'){
echo '<div class="btn-group floatRight" role="group" style="font-size: 14px;"><a href="'.$link.'" class="nav-link" style="margin-left: -20px;"> '.$ID.' <span class="'.$class.'" style="margin-left: 4px; margin-right: -6px;"> ' . $count . '</span></a></div>';
if ($count == 0) {
$_SESSION['re_totals']+= 0;
}
$_SESSION['re_totals']+= $count;
}else{
echo '<div class="btn-group floatRight" role="group"><a href="'.$link2.'" class="nav-link" style="margin-left: -20px;"> '.$ID.' <span class="'.$class.'" style="margin-left: 4px;"> ' . $count . '</span></a></div>';
if ($count == 0) {
$_SESSION['re_totals']+= 0;
}
$_SESSION['re_totals']+= $count;
}
}
Current result:
Request Totals: 000000
Desired Results:
Request Totals: 0 or 1,2,3 etc.
解决方法
我在回复中得到的内容是连续显示每个类别而不是总数。
为什么不简单地在数据库中进行计算?
SELECT
(SELECT COUNT(*) AS cnt FROM sku_request WHERE completed = 0)
+ (SELECT COUNT(*) FROM sku_update WHERE completed = 0)
+ (SELECT COUNT(*) FROM rma_submissions WHERE rma_number = 'Pending')
+ (SELECT COUNT(*) FROM idTermination WHERE completed = 0)
+ (SELECT COUNT(*) FROM id_request WHERE ssoid IS NULL)
+ (SELECT COUNT(*) FROM tda_request WHERE completed = 0)
AS res
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。