2011-07-14 122 views
0

这是我有的情况..我必须获取给定quoteId的所有相关案例,这需要3个表的连接,我能够拿出一个查询。下面是示例:为简洁起见,我省略了一些表名,并仅使用了别名。如何使用原始查询中获得的结果来执行子查询?

SELECT distinct caseTable.CASEID, quoteHdrTable.Case_UID FROM 
caseTable INNER JOIN quoteHdrTable ON 
quoteHdrTable.Case_UID = caseTable.Case_UID WHERE quoteHdrTable.QUOTE_ID = '12345'. 

现在对于返回的每个CASE_UID,我还需要从不同的表中显示其状态。这具有下面的结构。

STATUS_TABLE 
CASE_UID   STATUS 
------------ ----------- 
123    Good 
234    Bad. 
345    {null} 

到底我要像

result 
case_ID case_UID  status 
001   123   Good 

因此我们可以使用子查询做了第二个SQL使用的结果(case_UID)从first..please提供指针或样本SQL语句。

FYI..using DB2数据库

感谢 桑迪普

+0

你可以用STATUS_TABLE执行另一个内部连接吗? – Tocco

回答

0
SELECT distinct c.CASEID, q.Case_UID, s.status 
FROM caseTable c 
INNER JOIN quoteHdrTable q ON q.Case_UID = c.Case_UID 
LEFT JOIN StatusTable s ON s.CASE_UID = q.CASE_UID 
WHERE quoteHdrTable.QUOTE_ID = '12345' 

为什么不添加其他JOIN

+0

和@ Tocco..I尝试加入..它工作正常,如果有一些条目匹配状态表中的相同Case_UID ..但大多数情况下,状态表中可能没有该case_UID的条目。 – Sandeep

+0

@Sandeep一个左连接也应该输出行,如果状态表中没有匹配的行。 – marc

+0

谢谢马克刚才意识到,查询工作正常,如预期的..谢谢。 – Sandeep

0
SELECT  distinct 
      caseTable.CASEID, 
      quoteHdrTable.Case_UID, 
      status.STATUS 
FROM  caseTable 
INNER JOIN quoteHdrTable 
ON   quoteHdrTable.Case_UID = caseTable.Case_UID 
INNER JOIN STATUS_TABLE status 
ON   quoteHdrTable.Case_UID = status.Case_UID 
WHERE  quoteHdrTable.QUOTE_ID = '12345' 
+0

@马克和@托科..我试图加入..它工作正常,如果有一些条目匹配相同的Case_UID ..但大多数时间可以在状态表中没有该case_UID的条目。 – Sandeep

相关问题