2012-08-09 62 views
0

我有4個表,需要從其中的2個表中獲取值。Oracle SQL查詢和跨4個表的子查詢

政策 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,變量名,值

-

  • 每個策略的policy_id都有2-3條記錄的quote quote_id。

  • 每個報價quote_id有100-200條記錄的quote_clause
    quote_clause_id。

  • quote_clause_id thas600-700的每個quote_clause_variable記錄。

我試圖讓所有的policy_id的有28和 特定template_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' 
; 

非常感謝您的任何幫助。

回答

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

太棒了!是的,我以爲我很親密。在過去的幾個小時裏學了很多東西。感謝那。 Ta,Mikey – 2012-08-09 23:25:35