- 我需要显示从 Market wise 表中检索的数据。对于每个市场,可以计算和显示订单数量和商品数量。我只有一个栏目,即市场,但我需要以水平方式显示市场。
我已经尝试创建临时表来实现这一点。无论如何我得到了结果,但不准确。
$MarketQry="SELECT DISTINCT `Market` FROM `orders`";
$MarketResult=mysql_query($MarketQry,$con);
$OrdersQry="";
while($mvalue=mysql_fetch_array($MarketResult))
{
$OrdersQry.="CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Count`) ELSE 0 END AS `".$mvalue['Market']." -Number of Orders`, CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Records`) ELSE 0 END AS `".$mvalue['Market']." -Number of Order Line Items`,";
}
$createqry="CREATE TEMPORARY TABLE `temp_order_market` AS
SELECT ".$OrdersQry."`OrderDate` FROM
(SELECT COUNT(DISTINCT `OrderID`) AS `Count`,COUNT(`OrderID`) AS `Records`,`OrderDate`,`Market`
FROM `orders`
WHERE (`OrderDate` BETWEEN '$StartDate' AND '$EndDate')
GROUP BY `OrderDate`)
) AS `dummy` GROUP BY `OrderDate` ORDER BY `OrderDate` DESC";
echo $createqry."<br /><br />";
$resQry=mysql_query($createqry,$con) or die(mysql_error($con));
$selectqry="SELECT * FROM `temp_order_market`";
无论我得到什么结果都不准确。因为如果我得到个别市场的结果,我就会得到准确的结果。以下是我用于获取个别市场结果的查询。
SELECT SUM(`Count`) AS `Orders`,SUM(`Records`) AS `Records`,`OrderDate` FROM (SELECT COUNT(DISTINCT `OrderID`) AS `Count`,COUNT(`OrderID`) AS `Records`,`OrderDate` FROM `orders` WHERE (`OrderDate` BETWEEN '2015-01-01' AND '2015-01-31') AND `Market`='$MarketName' GROUP BY `OrderDate`)) AS `dummy` GROUP BY `OrderDate` ORDER BY `OrderDate` DESC";
现在我的问题是:
除了这个方法我们还能做这个吗/这有可能实现我正在使用的方法吗?
我怀疑我编写的查询的 CASE 语句。
请分享您的想法。提前致谢。
最佳答案
将 SUM() 添加到 $OrderQry,它现在工作正常。
旧
$OrdersQry.="CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Count`) ELSE 0 END AS `".$mvalue['Market']." -Number of Orders`, CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Records`) ELSE 0 END AS `".$mvalue['Market']." -Number of Order Line Items`,";
替换为
$OrdersQry.="SUM(CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Count`) ELSE 0 END) AS `".$mvalue['Market']." -Number of Orders`, SUM(CASE WHEN `Market`='".$mvalue['Market']."' THEN SUM(`Records`) ELSE 0 END) AS `".$mvalue['Market']." -Number of Order Line Items`,";
关于php - 如果条件为真,则在使用两个不同的语句时使用 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30885084/