需要帮助使这个SQL工作?

时间:2013-12-06 15:53:39

标签: mysql

这是我正在使用的sql来创建报告。

Select dw_crime_fact.no_of_crimes, dw_area_dim.area_desc, dw_time_dim.year,            dw_crime_type_dim.crime_type_desc
FROM dw_crime_fact, dw_area_dim, dw_time_dim, dw_crime_type_dim
WHERE dw_crime_fact.fk2_area_id = dw_area_dim.area_id
AND dw_crime_fact.fk1_time_id = dw_time_dim.time_id
AND dw_crime_fact.fk3_crime_type_id = dw_crime_type_dim.crime_type_id
AND dw_area_dim.area_id = '9' 
AND dw_crime_type_dim.crime_type_id = '120'
ORDER BY dw_time_dim.year

我在哪里包括最后两个和陈述

AND dw_area_dim.area_id ='9' AND dw_crime_type_dim.crime_type_id ='120'

我需要在这些中添加几个ID,以便:

area_id我需要它来自'9'和'10' 和 crime_type_id需要来自'80','90','120'和'200'

我已尝试制作更多和/或声明,但它们似乎没有找到数据。

请帮我解决这个问题,只需询问所需的任何其他信息。

1 个答案:

答案 0 :(得分:1)

只需为多个值使用IN子句。

AND dw_area_dim.area_id IN( '9', '10')
AND dw_crime_type_dim.crime_type_id IN ('80', '90', '120', '200')

顺便说一句,我会将整个查询重写为

Select 
crime.no_of_crimes, 
area.area_desc, 
timed.year, 
crime_type.crime_type_desc
FROM dw_crime_fact crime
join dw_area_dim area on area.area_id = crime.fk2_area_id
join dw_time_dime timed on timed.time_id = crime.fk1_time_id
join dw_crime_type_dim crime_type on crime_type.crime_type_id = crime.fk3_crime_type_id
WHERE 
area.area_id IN( '9', '10')
AND crime_type.crime_type_id IN ('80', '90', '120', '200')
ORDER BY timed.year