dqkyz02602 2014-11-21 08:11
浏览 13
已采纳

Mysql选择不同表中的两列[关闭]

as below I select two different column(count_group and group_total) with same table and condition. I feel that this method makes the page slow. Any suggestion?

$sql3 = "SELECT SUM(mr.payment_amount) as total ,
COUNT(mr.order_id) as count_personal , 

(SELECT COUNT(DISTINCT mr.group_order_id) 
FROM event_mgmt_registration mr 
WHERE mr.event_nid = ".$nid." 
AND mr.status='completed' 
AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$Sum['latest_date']."' 
AND mr.group_order_id != '' ) as count_group ,

(SELECT SUM(mr.payment_amount) 
FROM event_mgmt_registration mr 
WHERE mr.event_nid = ".$nid." 
AND mr.status='completed' 
AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$Sum['latest_date']."' 
AND mr.group_order_id != '' ) as group_total 

FROM event_mgmt_registration mr 
WHERE mr.event_nid =".$nid." 
AND mr.status='completed'  
AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$Sum['latest_date']."' 
AND mr.order_id !=''";
  • 写回答

2条回答 默认 最新

  • doujin8476 2014-11-21 08:20
    关注

    For better performance your better do a UNION to get the three results as a line each:

    SELECT 
    SUM(mr.payment_amount) as total ,
    COUNT(mr.order_id) as count_personal
    FROM event_mgmt_registration mr 
    WHERE mr.event_nid =".$nid." 
    AND mr.status='completed'  
    AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$molpaySum['latest_date']."' 
    AND mr.order_id !=''
    
    UNION ALL
    
    (SELECT NULL, COUNT(DISTINCT mr.group_order_id)
    FROM event_mgmt_registration mr 
    WHERE mr.event_nid = ".$nid." 
    AND mr.status='completed' 
    AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$molpaySum['latest_date']."' 
    AND mr.group_order_id != '' )
    
    UNION ALL
    
    (SELECT NULL, SUM(mr.payment_amount)
    FROM event_mgmt_registration mr 
    WHERE mr.event_nid = ".$nid." 
    AND mr.status='completed' 
    AND DATE_FORMAT(FROM_UNIXTIME(`datestamp`), '%Y-%m-%d') <= '".$Sum['latest_date']."' 
    AND mr.group_order_id != '' )  
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题