您好我有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 |
答案 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,