我有4个表,需要从其中2个获取值。
政策 policy_id,template_id
引用 quote_id,policy_id
quote_clause quote_clause_id,quote_id
quote_clause_variable quote_clause_variable_id,quote_clause_id,variable_name,value
-
每个策略policy_id都有2-3条引用quote_id的记录。
每个报价quote_id都有100-200条quote_clause记录 quote_clause_id。
quote_clause_id的每条quote_clause_id thas600-700条记录。
我正在尝试获取具有28和更高版本的特定template_id的所有policy_id 从那里,获取quote_clause_variable值,变量名称为'R01011C1'。
此时我有点迷失,下面的查询都没有接近正确。
SELECT policy.policy_id, quote_clause_variable.value
FROM mciaweb.policy
LEFT JOIN mciaweb.quote ON policy_id = policy_id
LEFT JOIN mciaweb.quote_clause ON quote_id = quote_id
LEFT JOIN mciaweb.quote_clause_variable ON quote_clause_id = quote_clause_id
WHERE policy.template_id = '28'
AND variable_name = 'R01011C1';
select
(select value from mciaweb.quote_clause_variable
where variable_name in ('R01011C1')
and quote_clause_id in
(select quote_clause_id from MCIAWEB.quote_clause where quote_id in
(select quote_id from MCIAWEB.quote where policy_id in
(select policy_id from mciaweb.policy where template_id in ('28')
)))) situation,
policy_id
from mciaweb.policy where template_id = '28'
;
非常感谢您提供任何帮助。
答案 0 :(得分:1)
如果我了解您的要求,那么您的第一个查询非常接近。这是我试过的:
SELECT p.policy_id, qcv.value
FROM policy p
INNER JOIN quote q ON p.policy_id = q.policy_id
INNER JOIN quote_clause qc ON qc.quote_id = q.quote_id
INNER JOIN quote_clause_variable qcv ON qcv.quote_clause_id = qc.quote_clause_id
WHERE p.template_id = '28'
AND qcv.variable_name = 'R01011C1';