php - 根据从父表获得的两个案例连接两个表

标签 php mysql mysqli

我有一个硬币表,提供有关上传硬币的所有信息,还有一个所有者表,提供有关特定硬币所有者的信息。在 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/

相关文章:

php - 我如何模式化 php 数据库调用?

php - 停止缓存页面的特定元素

java - 插入 mysql 时,列数与第 1 行的值数不匹配

过去 12 个月的 MySQL 月度销售额,包括没有销售额的月份

mysql - 如何提高此 SELECT 查询 JOIN 的性能

php - SELECT COUNT(*) 返回一个对象而不是整数

php - 如何从数据库的平面数组中创建嵌套注释数组

对 Stackoverflow API 的 PHP Curl 请求

php - 使用php表单将图片上传到mysql

php - 使用 PDO 准备语句和特定年份的占位符,我无法回应任何结果