【问题标题】:sql select records that don't have relation in a third tablesql选择第三个表中没有关系的记录
【发布时间】:2019-03-03 12:11:18
【问题描述】:

我有三张桌子

CLAIMS_TB

CLAIMS_RISK_TB

VEHICLE_TB

然后我需要以下结果:

谁能帮助我或与我分享要使用的查询? 注意:如果代码为 700,则表示它是车辆,必须填写名为“ai_vehicle_use”的列,否则必须将其留空,因为“VEHICLE_TB”表仅包含车辆

这是我尝试过的:

   select 
klm.CM_PL_INDEX,
klm.cm_no,
klmrisk.cr_risk_code,
CASE WHEN klm.CM_PR_CODE = '0700' THEN klmrisk.cr_risk_code ELSE '' END,
 veh.ai_vehicle_use  
from  CLAIMS_TB klm 
JOIN CLAIMS_RISK_TB klmrisk 
  ON (klm.cm_index = klmrisk.cr_cm_index)  
INNER JOIN VEHICLE_TB veh 
  on veh.ai_regn_no = klm.cm_no  
where klm.cm_no='CL/01/044/00001/01/2018' 
or klmrisk.cr_cm_index='86594' 
order by klmrisk.cr_risk_code;

【问题讨论】:

  • MySQL 还是 SQL Server?不要标记多个 RDBMS。一切都不一样!
  • 你能发布你到目前为止所尝试的吗?
  • 我建议您阅读stackoverflow.com/help/how-to-ask 部分“帮助他人重现问题”.. 图片不能帮助我们重现..
  • 告诉我们你到目前为止写了什么查询?
  • 您能否将您的尝试添加到问题中,而不是 cmets? cmets 的格式对于代码来说是可怕的。此外,而不是图像,发布文本会很有帮助。 Why?。还有一篇很棒的文章 here 展示了您应该发布的内容以方便其他人使用。

标签: oracle


【解决方案1】:

我相信这可以满足您的需求。

SELECT
*
FROM CLAIMS_TB AS c
LEFT JOIN CLAIMS_RISK_TB cl ON c.cm_index = cl.cr_cm_index
LEFT JOIN VEHICLE_TB v ON cl.cr_risk_code = v.ai_risk_index

【讨论】:

  • 它拒绝,我认为是因为 VEHICLE_TB 仅包含车辆 (700)
  • @Isaackitenge - 你的意思是这个查询没有运行吗?如果是这样,请发布错误消息。如果它返回错误的结果,请解释结果是如何错误的。仅仅说“它不起作用”并不能帮助我们得到你想要的答案。
【解决方案2】:

我终于找到了解决方案,下面的查询有效:

select * from CLAIMS_TB  c
JOIN CLAIMS_RISK_TB cr ON( C.CM_INDEX = cr.cr_cm_index) 
LEFT OUTER JOIN VEHICLE_TB v ON (cr.cr_risk_code = v.ai_regn_no);

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2021-06-19
    相关资源
    最近更新 更多