Mysql 如何将不同表中的两个字段添加到SQL中

Mysql 如何将不同表中的两个字段添加到SQL中,mysql,count,sum,concat,group-concat,Mysql,Count,Sum,Concat,Group Concat,我试图创建一份报告,显示工作中出现问题的原因,即货物损坏、未交付等 select group_concat(distinct concat( 'sum((select count(jp1.MemReason) from job_pieces jp1 left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason where jp1.jobid=jn

我试图创建一份报告,显示工作中出现问题的原因,即货物损坏、未交付等

select
  group_concat(distinct
       concat(
        'sum((select count(jp1.MemReason) from job_pieces jp1 
         left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason
         where jp1.jobid=jn.id and un1.Code=''',
         un.Code,
        '''))  AS `',
        un.Code, '`'
        )
   ) into @sql
   FROM customer c
   LEFT JOIN job_new jn ON jn.JobOwnerID = c.ID
   LEFT JOIN job_pieces jp ON jp.JobID = jn.ID
   LEFT JOIN unapprovedquotereasons un on un.Description = jp.DebriefReason
   WHERE c.Company_ID = 171;
因此,此sql语句将原因显示为标题,并在该列下显示每个公司使用该原因的次数:

因此,在图像中,我们可以看到第二家公司两次使用“损坏”的原因。 我遇到的问题是,原因也保存在数据库的另一个表中。因此,我还需要从
job\u new
表中计算名为
MemOutturnReason
的字段。如何将这两个字段相加

生成的SQL:

select
        sum((select count(jp1.MemReason) from job_pieces jp1 
                   left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason
                   where jp1.jobid=jn.id and un1.Code='DAM'))  AS `DAM`,sum((select count(jp1.MemReason) from job_pieces jp1 
                   left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason
                   where jp1.jobid=jn.id and un1.Code='SIZE'))  AS `SIZE`,sum((select count(jp1.MemReason) from job_pieces jp1 
                   left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason
                   where jp1.jobid=jn.id and un1.Code='GOODS'))  AS `GOODS`,sum((select count(jp1.MemReason) from job_pieces jp1 
                   left join unapprovedquotereasons un1 on un1.Description =jp1.MemReason
                   where jp1.jobid=jn.id and un1.Code='NOTREV'))  AS `NOTREV`
    FROM customer c
    LEFT JOIN job_new jn ON jn.JobOwnerID = c.ID
WHERE jn.IsActive = 1 AND c.Company_ID = 171  GROUP BY jn.JobOwnerID

我不确定数据库表中的字段,希望这能让您有所了解。这是一个伪代码。根据您的数据库表和字段进行修改后再尝试此操作

   SELECT c.name as Name, count(jp.MemReason) as DAMAGED, count(jp.something) as PROB
   FROM customer c
   LEFT JOIN job_new jn ON jn.JobOwnerID = c.ID
   LEFT JOIN job_pieces jp ON jp.JobID = jn.ID
   LEFT JOIN unapprovedquotereasons un on un.Description = jp.DebriefReason
   GROUP BY c.Company_ID;

你能粘贴生成的SQL吗?这将有助于了解到底在运行什么以及如何进行更改it@vmachan我将生成的SQL添加到问题中。我基本上只需要添加到added
jp.MemReason
jn.MemOutturnReason
,如果它们具有相同的描述