0

4つのテーブルがあり、そのうちの2つから値を取得する必要があります。

ポリシーpolicy_id、template_id

quote 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には、quotequote_idの2〜3レコードがあります。

  • 各quotequote_idには、quote_clause
    quote_clause_idの100〜200レコードがあります。

  • quote_clause_idthas600-700のquote_clause_variableの各レコード。

特定のtemplate_idが28であるすべてのpolicy_idを取得しようとしています。そこから、変数名が「R01011C1」であるquote_clause_variable値を取得します。

私はこの時点で少し迷っています。以下のクエリはどちらもほぼ正しいものではありません。

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'
;

これについて助けてくれてありがとう。

4

1 に答える 1

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';
于 2012-08-09T22:37:52.077 に答える