Mysql 我们如何将结果与分组联系起来

Mysql 我们如何将结果与分组联系起来,mysql,sql,group-by,aggregation,Mysql,Sql,Group By,Aggregation,这里我连接了三个表,并希望通过groupby方法获得结果 $query=$this->db->query("SELECT p.id, p.customerid, T.u_id, A.u_id, T.agent_name, P.date as d_date, T.total_profit, A.t_price, A.t_dc FROM bills P LEFT JOIN((SELECT *, bill_details.id

这里我连接了三个表,并希望通过groupby方法获得结果

$query=$this->db->query("SELECT p.id, p.customerid, T.u_id, A.u_id, T.agent_name,
       P.date as d_date, T.total_profit, A.t_price, A.t_dc
  FROM bills P
  LEFT JOIN((SELECT *,
                    bill_details.id as b_id,
                    bill_details.user_id as u_id,
                    SUM(bill_details.profit) AS total_profit
               FROM bill_details
              WHERE DATE(bill_details.bill_date) BETWEEN '{$start_date}' AND
                    '{$end_date}'
                AND bill_details.user_id = 406
              GROUP BY Date(bill_details.bill_date), bill_details.user_id) T)
    ON p.id = T.bill_id
  LEFT JOIN((SELECT *,
                    assigned_result.assigned_result_id as a_id,
                    assigned_result.user_id as u_id,
                    SUM(assigned_result.total_price) AS t_price,
                    SUM(assigned_result.total_dc) AS t_dc
               FROM assigned_result
              WHERE DATE(assigned_result.date) BETWEEN '{$start_date}' AND
                    '{$end_date}'
                AND assigned_result.user_id = 406
              GROUP BY Date(assigned_result.date), assigned_result.user_id) A)
    ON p.id = A.bill_no
 WHERE T.u_id = 406
    OR A.u_id = 406");
  return $query->result();
如果我在按条件分组,例如按T.u\u id分组,A.u\u id 我的输出如下所示

Name    Date          Purchase      Winning     Balance

        2019-07-25                    240        -240

Ned     2019-07-25     132.60        0.00         132
我希望结果是这样的

Name    Date          Purchase      Winning     Balance

Ned     2019-07-25    132.60          240          132
使用额外的
max()
聚合:

SELECT max(Name) as Name, Date, max(Purchase) as Purchase, 
       max(Winning) as Winning, max(Balance) as Balance
  FROM
  (
   <YourOriginalQuery>
  ) q
 GROUP BY Date;
选择max(名称)作为名称,日期,max(采购)作为采购,
马克斯(胜利)为胜利,马克斯(平衡)为平衡
从…起
(
)q
按日期分组;

您不使用您的
分组依据显示查询。但根据您的描述,您可以:

  • 完全删除
    分组BY
    。聚合查询将返回一行
  • 使用“按合并分组”(T.u\u id,A.u\u id)
如果这些列位于
SELECT
中,您可能还需要调整
SELECT
子句