我有一个交易表(包括所有交易),买方表(包括买方ID,姓名和其他详细信息),卖方表(包括卖方ID,姓名和其他详细信息)
在交易表中有两列用户ID(对应的卖方或买方ID)和用户标志(具有两个值之一(“买方”或“卖方”))。
我想根据用户标志和用户ID从买方或卖方表中了解用户名。我尝试使用以下查询,但似乎无法正常工作。
SELECT trans.*
FROM transaction_summary AS trans
LEFT JOIN
(SELECT * FROM CASE WHEN trans.user_flag = 'buyer' THEN Buyer ELSE Seller END AS users)
ON users.id = trans.user_id
ORDER BY transaction_id desc
答案 0 :(得分:2)
尝试一下:
select t.*,
case when trans.user_flag = 'buyer'
then (select name from buyers where id = t.user_id)
else (select name from seller where id = t.user_id)
end as name
from transactions t
答案 1 :(得分:0)
您不能动态加入。联接两个表并使用case
SELECT trans.*,
case when trans.user_flag = 'buyer'
then b.name
else s.name
end as name
FROM transaction_summary trans
LEFT JOIN Buyer b on b.id = trans.user_id
LEFT JOIN Seller s on s.id = trans.user_id
ORDER BY transaction_id desc