douti6740 2014-07-15 22:05
浏览 203
已采纳

使用Union或Join在where语句中使用多个查询结果

I need to combine results of 3 sum queries and echo the results in a loop. I am stuck on how this is done the right way. I would like to use a while loop to echo a row for each client that shows the results of the 3 sum queries grouped by the client name:

client name | Total Due | Total Due From Cash Sales | Total Due From Credit Sales

result shows all due to a client. noncashresult shows all due to a client from Credit sales. cashresult shows all due to a client from Cash sales.

$result = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Total Due` 
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' 
GROUP BY `client_name`"); 

$noncashresult = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Credit Total Due`
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' AND `paymenttype` IN ('Credit') 
GROUP BY `client_name`");

$cashresult = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Cash Total Due`
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' AND `paymenttype` IN ('Cash') 
GROUP BY `client_name`");

while($row = mysql_fetch_array($result))
                    {
                echo $row['Client'];
                echo $row['Total Due'];
                echo $row['Credit Total Due'];
                echo $row['Cash Total Due'];
                    }
  • 写回答

1条回答 默认 最新

  • douketangyouzh5219 2014-07-15 22:16
    关注

    You could use something like:

    SELECT `client_name` As `Client`,
    SUM(`due_to_client`) As `Total Due`,
    SUM(CASE WHEN `paymenttype`='Credit' THEN `due_to_client` ELSE 0 END) As `Credit Total Due`,
    SUM(CASE WHEN `paymenttype`='Cash' THEN `due_to_client` ELSE 0 END) As `Cash Total Due`
    FROM `Consignment` 
    WHERE `payout_approved` = 'Yes' 
    GROUP BY `client_name`
    

    This should produce result:

    Client | Total Due | Credit Total Due | Cash Total Due
    

    Of course, try to avoid using mysql_* extension, while this was deprecated in mysql 5.5.x. Instead use mysqli or pdo extension

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?