【发布时间】:2013-09-21 19:56:43
【问题描述】:
这是场景: 有4张桌子 - CF {ID, NAME} - 类{ID,CLASSCODE,CF_ID} - 所有者 {ID, AREACODE, CF_ID} - 区域 {ID、区域代码、区域代码}
CF_ID 是指向 CF.ID 的外键
我想查询数据库以获得 3 列: - 地区代码 - 班级代码 - FREQUENCY(CF.ID的出现次数)、GROUP BY REGIONCODE和CLASSCODE
棘手的部分是查询返回的数据集应该包括频率为 0 的行,以防在特定 REGIONCODE 中找不到特定 CLASSCODE 的出现。 基本上我想让每个 CLASSCODE (DISTINCT) 的 REGIONCODE (DISTINCT) 的 carthesian 乘积枚举所有事件,即使 FREQUENCY 为零。
这是我写的查询:
SELECT
REGION.REGIONCODE, CLASS.CLASSCODE, COUNT(CF.ID) AS Frequency
FROM REGION
JOIN OWNER ON REGION.AREACODE = OWNER.AREACODE
JOIN CF ON OWNER.CF_ID = CF.ID
JOIN CLASS ON CLASS.CF_ID = CF.ID
GROUP BY CLASS.CLASSCODE, REGION.REGIONCODE
ORDER BY REGION.REGIONCODE, CLASS.CLASSCODE
【问题讨论】: