嗨,我有下图所示的表格结构
我试图用mysql编写查询来获取
客户表中的名称、地址、单声道或自动售货机取决于transportsticker表中的whoseid值
我试着
SELECT transportsticker.* ,AA.name,AA.address,AA.mono FROM transportsticker INNER JOIN (case when (transportsticker.whoseid='vendor') then (vendortable) else (customertable) end) AA ON AA.id=transportsticker.vorcid AND transportsticker.id=1
但它给出了语法错误。
有谁能帮我…?
最佳答案
CASE
在sql中是一个表达式,不能像在过程语言中那样用于控制执行流。
您可以将LEFT JOIN
与COALESCE
一起使用:
SELECT t.*,
COALESCE(c.name, v.name),
COALESCE(c.address, v.address),
COALESCE(c.mono, v.mono)
FROM transportsticker AS t
LEFT JOIN customertable AS c
ON t.whoseid='customer' AND c.id=t.vorcid
LEFT JOIN vendortable AS v
ON t.whoseid='vendor' AND v.id=t.vorcid
WHERE t.id=1