显示MYSQL中的所有数据

时间:2017-02-16 16:24:07

标签: php mysql

我有一个查询应该显示与where子句匹配的所有数据,但不幸的是它只显示1个数据。这是我的询问。

SELECT
  CONCAT(member.firstName, ' ', member.middleName, ' ', member.lastName) AS name,
  (SUM(serviceapplication.memShareCap) * (60 / 100))                     AS total_memshare,
  COUNT(serviceapplication.servAppID)                                    AS total_mem,
  serviceapplication.memShareCap                                         AS memsharecap
FROM serviceapplication
  INNER JOIN member ON member.memID = serviceapplication.applyingMember
WHERE serviceapplication.status = 'Active'
      AND member.memType = 'Client'
      AND serviceapplication.CoopInfo_coopID = '1'

如何显示所有数据?

1 个答案:

答案 0 :(得分:0)

由于您使用的是聚合函数,即sum和count,因此缺少group by子句:

select concat (
        member.firstName,
        ' ',
        member.middleName,
        ' ',
        member.lastName
        ) as name,
    (SUM(serviceapplication.memShareCap) * (60 / 100)) as total_memshare,
    COUNT(serviceapplication.servAppID) as total_mem,
    serviceapplication.memShareCap as memsharecap
from serviceapplication
inner join member on member.memID = serviceapplication.applyingMember
where serviceapplication.status = 'Active'
    and member.memType = 'Client'
    and serviceapplication.CoopInfo_coopID = '1'
group by concat (
        member.firstName,
        ' ',
        member.middleName,
        ' ',
        member.lastName
        ),
    serviceapplication.memShareCap

如果要获取每行中所有成员的总数,请使用子查询:

select concat (
        member.firstName,
        ' ',
        member.middleName,
        ' ',
        member.lastName
        ) as name,
    (
        select SUM(serviceapplication.memShareCap) * (60 / 100)
        from serviceapplication
        inner join member on member.memID = serviceapplication.applyingMember
        where serviceapplication.status = 'Active'
            and member.memType = 'Client'
            and serviceapplication.CoopInfo_coopID = '1'
        ) as total_memshare,
    (
        select COUNT(serviceapplication.servAppID)
        from serviceapplication
        inner join member on member.memID = serviceapplication.applyingMember
        where serviceapplication.status = 'Active'
            and member.memType = 'Client'
            and serviceapplication.CoopInfo_coopID = '1'
        ) as total_mem,
    serviceapplication.memShareCap as memsharecap
from serviceapplication
inner join member on member.memID = serviceapplication.applyingMember
where serviceapplication.status = 'Active'
    and member.memType = 'Client'
    and serviceapplication.CoopInfo_coopID = '1';