美好的一天,
我有4个表要加入。现在我想根据交易类型获取每个交易的详细信息。如果
交易表
id | type | source_id
1 'product' 1
2 'reservation' 1
3 'service' 1
产品表
id | Name
1 | product 1
预订表
id | reservation name | other details
1 | some reservation name | ------
服务表
id | Service Name | Other details
1 | House Cleaning Service | ------------
这是我想要的桌子
id | type | source_id | product_name | reservation_name | service name
1 'product' 1 product 1 null null
2 'reservation' 1 null some reservation name null
3 'service' 1 null null House Cleaning Service
目前我最疯狂的猜测是
select a.id,a.type,a.source_id,b.product_name,c.reservation_name,d.service_name
from transaction as a
left join product_table as b on a.source_id = b.id
left join reservation_table as c on a.source_id = c.id
left join services_table as d on a.source_id = d.id
而且我确定它不会100%:D
有没有一种方法可以添加条件,如果'type'列='product',那么它只能从products表中提取?
最佳答案
您可以尝试使用CASE指令,如下所示:
select a.id,a.type,a.source_id,
CASE a.source_id
WHEN 'product' THEN b.product_name
else null
END ,
CASE a.source_id
WHEN 'reservation' THEN c.reservation_name
else null
END ,
CASE a.source_id
WHEN 'service' THEN d.service_name
else null
END
from transaction as a
left join product_table as b on a.source_id = b.id
left join reservation_table as c on a.source_id = c.id
left join services_table as d on a.source_id = d.id
关于mysql - 如何在mysql上添加条件以获得基于列值的不同表上的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49854713/