Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果条件为true,则在使用两个不同语句时使用CASE语句 我需要显示从表Market-wise检索的数据。对于每个市场,可以计算和显示订单数量和项目数量。我只有一个栏目,即市场,但我需要以水平方式显示市场_Php_Mysql - Fatal编程技术网

Php 如果条件为true,则在使用两个不同语句时使用CASE语句 我需要显示从表Market-wise检索的数据。对于每个市场,可以计算和显示订单数量和项目数量。我只有一个栏目,即市场,但我需要以水平方式显示市场

Php 如果条件为true,则在使用两个不同语句时使用CASE语句 我需要显示从表Market-wise检索的数据。对于每个市场,可以计算和显示订单数量和项目数量。我只有一个栏目,即市场,但我需要以水平方式显示市场,php,mysql,Php,Mysql,我已经尝试创建临时表来实现这一点。不管怎样,我得到了结果,但并不准确 $MarketQry="SELECT DISTINCT `Market` FROM `orders`"; $MarketResult=mysql_query($MarketQry,$con); $OrdersQry=""; while($mvalue=mysql_fetch_array($MarketResult)) { $OrdersQry.="CASE WHEN `M

我已经尝试创建临时表来实现这一点。不管怎样,我得到了结果,但并不准确

    $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`";
现在我的问题是:

  • 除了这个方法,我们还可以这样做吗/这是否可以实现我正在使用的方法

  • 我对我写的问题的陈述表示怀疑

  • 请分享你的想法。提前感谢。

    将SUM()添加到$OrderQry中,它现在工作正常

    旧的 替换为 将SUM()添加到$OrderQry中,它现在可以正常工作

    旧的 替换为
    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";
    
    $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`,";