count计数具有两列相同组合的行数

时间:2014-04-05 08:34:55

标签: php mysql

您好我有2个表进攻表和User_jobs表

offense table:
crime_id |crime_type |casenumber|
---------+-----------+----------+
1        | 3         |1         |
2        | 3         |1         |
1        | 3         |2         |
12       | AA        |2         |

user_jobs table:
casenumber |disposal_status |
-----------+----------------+
1          | yes            |
1          | yes            |
2          | no             |
2          | no             |

我想要的是计算具有相同组合的行数,例如crime_id = 1和crime_type = 3,但这些必须在user_jobs表中具有处置状态为。

我想在mysql中这样做。 PLIZ帮助

抱歉,但我是mysql的新手。我现在想要显示那些id的真实姓名而不是id本身。

具有这些ID的表是crime_category和Crime_type Crime_catgory

table: 
category |crime_id | 
-----------+----------------+ 
theft | 1 | 
murder | 2 | 
rape | 3 | 2 | 
no | 

Crime_type table: 
Crime_type |id | 
---------------+----------------+ 
administrative | yes | 
criminal | yes | 

1 个答案:

答案 0 :(得分:1)

您可以使用简单的内部联接和聚合函数来执行此操作:

select
    o.crime_id,
    o.crime_type,
    count(*)
from
    offence o
        join user_jobs uj
            on o.casenumber=uj.casenumber
where
    uj.disposal_status='Yes'
group by
    o.crime_id,
    o.crime_type

这将选择连接的前两列的不同组合,因为它们应该是作业表,并且只有dispos_status等于'是'

编辑:你可能会很好地阅读我为这种情况而放在一起的Q& A - 我给你的代码,但是我想解释一下这个问题还有很多详情。 Q& A解释了为什么这类事物(以及许多其他事物)起作用以及它们如何运作:

How can an SQL query return data from multiple tables

编辑2:

select
    o.crime_id,
    o.crime_type,
    ct.category,
    count(*)
from
    offence o
        join user_jobs uj
            on o.casenumber=uj.casenumber
        join crime_type ct
            on o.crime_type=ct.crime_id
where
    uj.disposal_status='Yes'
group by
    o.crime_id,
    o.crime_type,
    ct.category,