在Join中使用的案例

时间:2017-12-07 08:54:08

标签: sql mysqli left-join

我试图在Join中使用案例功能,但我无法执行查询。 我做错了什么?

left join vortex_dbo.vw_public_material_history on 
CASE
WHEN vw_public_request_material_location_mir.material_request_id = (substring(vw_public_material_history.comments,12,6))

then vw_public_request_material_location_mir.material_request_id
else null
end 

我希望得到的只是当我有" true"来自"当"

我觉得我在这里错过了什么。

1 个答案:

答案 0 :(得分:0)

你的CASE表达毫无意义。 CASE表达式会产生一个值,例如material_request_id中的值。所以你得到了

left join vortex_dbo.vw_public_material_history on material_request_id

如果是字符串匹配。您是否注意到此ON子句不完整?

您可能正在寻找

left join vortex_dbo.vw_public_material_history on 
  vw_public_request_material_location_mir.material_request_id = 
  (substring(vw_public_material_history.comments,12,6))

使用表别名可以更好地阅读:

from vw_public_request_material_location_mir mir
left join vortex_dbo.vw_public_material_history hist on 
  mir.material_request_id = (substring(hist.comments,12,6))

关于您的数据模型:您在字符串中隐藏了ID似乎很奇怪。您可能需要重新考虑您的表格设计。