次のような 3 つのテーブルがあります。
表 1 の構造:
名前: registered_applicant_details
フィールド: Application_id INT PRIMARY_KEY、state_id INT;
表 2 構造:
名前: oc_shortlisted_candidates
フィールド: 候補 ID; >>> 外部キーは、registered_applicant_details の application_id を参照します
表 3 構造:
名前: oc_selected_candidates
フィールド: 候補_id; >>> 外部キーは、registered_applicant_details の application_id を参照します
次のような結果セットが必要です: state_wise_counts
state_id | shortlisted_count | selected_counts
結果を得るための私のアプローチは
ステップ 1: このような 2 つのビューを作成しました
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: これら 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;
私のアプローチの欠点
2 つの外部テーブル (shortlisted_candidates と selected_candidates) があるので、2 つのビューを作成していますが、10 個のテーブルが意味するようにすると、10 個のビューを作成する必要があります。
したがって、「state_wise counts」の場合、10 個のビューを作成する必要があります。もう 1 つの属性、つまり「city」が存在する場合、また「city_wise_counts」が必要な場合は、さらに 10 個のビューを作成する必要があります。
これは正しい方法ではないと思います。
正しい解決策を教えてください。
注:これらのテーブルには約10,000のレコードがあり、アプリケーションからのdb呼び出しの数を減らす必要があるため、サブクエリを使用したくありません