嗨,我的表结构如图所示。

我试图用mysql编写查询以获取
名称、地址、来自客户表或供应商表的单值取决于运输标签表中的值。
我试过
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但是它产生了语法错误。有人能帮我吗.
发布于 2016-06-13 11:19:51
SQL中的CASE是一个表达式,不能像在过程语言中那样用于控制执行流。
您可以将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发布于 2016-06-13 11:26:00
试试这样的东西。
SELECT name, address, mono FROM TransportSticker, CustomerTable, VendorTable WHERE (TransportSticker.whoseid = 'vendor' AND VendorTable.id = TransportSticker.vorcid) OR (TransportSticker.whoseid = 'customer' AND CustomerTable.id = TransportSticker.vorcid)这将从表VendorTable和CustomerTable中选择对应的条目到TransportSticker中的条目。
https://stackoverflow.com/questions/37788304
复制相似问题