我有一个硬币表,提供有关上传硬币的所有信息,还有一个所有者表,提供有关特定硬币所有者的信息。在 coin_owners 表中,有一个字段“ownership_mode”,它可以是“transfer”或“Reward”。如果模式是'转会',我想离开加入转会 table ,如果模式是'奖励',我想加入奖励 table 。
我已经尝试使用 CASE 子句,但它不起作用。
我试过的查询是:
SELECT * , coins.id AS CoinId FROM coins
LEFT JOIN coin_owners ON coin_owners.coin_id = coins.id
LEFT JOIN (CASE WHEN coin_owners.`ownership_mode` = 'transfer' THEN transfer_detail ON transfer_detail.transfer_to = coin_owners.current_owner
AND transfer_detail.transfer_from = SUBSTRING_INDEX( coin_owners.previous_owner, ',', '-1' )
WHEN coin_owners.`ownership_mode` = 'Reward' THEN rewards ON rewards.`coin_ids` = coin_owners.coin_id
AND coin_owners.`ownership_mode` = 'Reward'
AND STATUS = '0'
) WHERE coins.id ='".validString($_REQUEST["coinId"])."' LIMIT 0,1
最佳答案
非常感谢...但我使用了以下查询并且工作正常>---->
SELECT * , coins.id AS CoinId FROM coins
LEFT JOIN coin_owners ON coin_owners.coin_id = coins.id
LEFT JOIN transfer_detail ON transfer_detail.coin_id = coin_owners.coin_id AND transfer_detail.transfer_to = coin_owners.current_owner AND transfer_detail.transfer_from = SUBSTRING_INDEX( coin_owners.previous_owner, ',', '-1' ) AND coin_owners.`ownership_mode` = 'transfer'
LEFT JOIN rewards ON rewards.`coin_ids` = coin_owners.coin_id AND coin_owners.`ownership_mode` = 'Reward' AND STATUS = '0'
WHERE coins.id ='".mysql_real_escape_string(trim($_REQUEST["coinId"]))."' LIMIT 0,1
感谢大家的帮助
关于php - 根据从父表获得的两个案例连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477546/