加入3个表,只使用2个数据?

时间:2013-10-03 18:36:18

标签: sql database oracle11g

我有3张桌子。 我需要来自2个表的信息,而第3个表链接它们。 有人可以给我一个使用连接的例子吗? 对于这个例子,我需要保险公司的名字,姓名,生效日期和保单的到期日期。

凡人表

   SQL> desc mortal
 Name
 ---------------------
 MORTAL_ID
 SEX_TYPE_CODE
 FIRST_NAME
 LAST_NAME
 DOB
 MARITAL_STATUS_CODE
 SSN
 MIDDLE_NAME
 WORK_PHONE

保险(链接)表

SQL> desc insured    
 Name
 ------------------------
 INSURED_ID
 INSURED_TYPE_CODE
 POLICY_ID
 MORTAL_ID
 BANK_ACCOUNT_NUM
 INSURED_NUM

政策表

 SQL> desc policy
     Name
     ---------------------------
     POLICY_ID
     PLAN_ID
     POLICY_STATUS_TYPE_CODE
     PAYER_GROUP_ID
     EFFECTIVE_DATE
     POLICY_NUM
     EXPIRE_DATE

如您所见,我需要表1和表1中的数据。 3,但必须使用表2来链接它们。 这是什么类型的加入?我该如何使用它们?

3 个答案:

答案 0 :(得分:1)

这仍然是一个简单的加入。这是一种方式。

select m.first_name, m.last_name, p.effective_date, p.expired_date
from mortal m
  inner join policy p
    on p.policy_id = i.policy_id
  inner join insured i
    on i.mortal_id = m.mortal_id

不确定问题是什么。但如果问题只是“你可以加入一个你没有选择的表格”,那么答案是肯定的。

答案 1 :(得分:1)

您只需要加入表格即可。连接类型取决于您要实现的目标。以下是一个基本示例:

SELECT a.field, c.field 
FROM [Mortal Table] a 
JOIN [Insured Table] b ON a.MORTAL_ID=b.MORTAL_ID 
JOIN [Policy Table] c on b.POLICY_ID=c.POLICY_ID 
*WHERE Clause*

希望这有帮助。

答案 2 :(得分:1)

这样的东西?

SELECT mortal.*, policy.*
FROM mortal 
INNER JOIN insured ON insured.MORTAL_ID = mortal.MORTAL_ID
INNER JOIN policy ON insured.POLICY_ID = policy .POLICY_ID

您可以使用左连接替换内部联接以查看每个凡人的记录。