我有三个这样的表:
表1结构:
名称:registered_applicant_details
字段:application_id INT PRIMARY_KEY,state_id INT;
表2结构:
名称:oc_shortlisted_candidates
字段:candidate_id;>>> 哪个是外键,指的是registered_applicant_details中的applicant_id
表3结构:
名称:oc_selected_candidates
字段:candidate_id;>>> 哪个是外键,指的是registered_applicant_details中的applicant_id
我想要这样的结果集:state_wise_counts
state_id | shortlisted_count | selected_counts
我得到结果的方法是
第 1 步:我创建了两个这样的视图
CREATE VIEW state_wise_shortlisted_count AS
(select rad.state_id AS state_id,
count(0) AS shortlisted
from (oc_shortlisted_candidates oec
join registered_applicant_details rad)
where (oec.candidate_id = rad.applicant_id)
group by rad.state_id);
CREATE VIEW state_wise_selected_count AS
(select rad.state_id AS state_id,
count(0) AS selected
from (oc_selected_candidates oec
join registered_applicant_details rad)
where (oec.candidate_id = rad.applicant_id)
group by rad.state_id);
第 2 步:现在再次使用 state_id 加入这两个视图
SELECT s.state_id, sho.shortlisted, sel.selected
FROM statewise_shortlisted_count sho
JOIN statewise_selected_count sel ON sel.state_id = sho.state_id;
我的方法的缺点
由于我们有两个外部表,即 (shortlisted_candidates & selected_candidates) 我正在创建两个视图,但如果我们有这样的 10 个表意味着,我需要创建 10 个视图。
因此,对于“state_wise counts”,我们需要创建 10 个视图,如果存在更多属性,即“city”并且如果我们再次想要“city_wise_counts”,我需要再创建 10 个视图。
我认为这不是正确的方法。
请建议我正确的解决方案。
注意:我不想使用子查询,因为这些表有大约 10,000 条记录,我需要减少来自应用程序的 db 调用次数