アップロードされたコインに関するすべての情報を提供するコイン テーブルと、特定のコインの所有者に関する情報を提供する所有者テーブルがあります。coin_owners テーブルには、' transfer ' または ' Reward ' のいずれかになる 'ownership_mode' フィールドがあります。モードが「転送」の場合は転送テーブルに参加したままにし、モードが「報酬」の場合は報酬テーブルに参加したい。
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