如何组合两个表并将其值计为一个?

时间:2015-07-20 13:51:40

标签: mysql sql

我希望在合并两张表时获得犯罪总数。 但我想计算每个犯罪的数字,并显示那些未被提交为0的值,我如何使用mysql实现这一点? 我的代码:

  SELECT count(offense_id) 
    AS totalnumber,(
    select offense_description
    from offense
    where offense.offense_id = case_crime.offense_id
    )as crimeName
    from case_crime
    group by offense_id

case_crime table

offense table

output but i also want to display offense_description that no crime being committed

2 个答案:

答案 0 :(得分:0)

您正在寻找LEFT OUTER JOIN

这样的东西
SELECT offense.offense_id
    , offense_description
    , count(case_crime.case_id) as Total_Number

from offense
LEFT OUTER JOIN case_crime ON offense.offense_id = case_crime.offense_id
group by offense.offense_id

我承认,我是一个TSQL人员,因此当没有使用指定攻击的案例时,我会处理COUNT(*)返回null:ISNULL(COUNT(case_crime),0)

其他SQL变体可能会使用COALESCE( COUNT(case_crime), 0)

答案 1 :(得分:0)

要获取所有攻击列表和已注册犯罪的数量,您需要在两个表之间使用LEFT JOIN ....类似这样的SQL:

SELECT a.offense_id, a.offense_description, count(b.crime_caseid) as total
FROM offense a LEFT JOIN case_crime b
ON a.offense_id = b.offense_id
group by a.offense_id;

Here is a SQLFiddle玩弄:))