我有2个表:“shares”和“pending_share_changes”。 “shares”表包含以下列:
share_ID, asset_ID, member_ID, percent_owner, is_approved
pending_share_changes包含以下列:
share_change_ID, asset_ID, member_ID, percent_owner, is_approved, requested_by
我有一个表单(php),列出了成员必须批准或拒绝的待处理更改。除非会员没有现有股票,否则一切正常,这意味着“股票”表中没有记录。我用来查看待处理共享更改的查询如下:
SELECT p.share_change_ID, assets.asset_desc, assets.asset_value, shares.percent_owner AS
percent_owner_old, p.percent_owner
FROM pending_share_changes as p
inner join assets on assets.asset_ID = p.asset_ID
inner join shares on shares.asset_ID = p.asset_ID AND shares.member_ID = p.member_ID
INNER JOIN orgs ON orgs.org_ID = assets.org_ID
WHERE orgs.org_ID = '$org_ID' AND p.member_ID = '$member_ID' AND p.is_approved = '0'
我尝试使用IFNULL(shares.percent_owner,0)AS percent_owner_old,但这不起作用。查询不返回任何结果。如果共享表中没有记录,我想让percent_owner_old列显示为“0”。
感谢。
答案 0 :(得分:1)
尝试将您的加入从shares
更改为INNER JOIN
{/ 1}}。
LEFT JOIN
这意味着“对于SELECT ....
FROM pending_share_changes p
....
LEFT JOIN shares ON shares.asset_ID = p.asset_ID AND shares.member_ID = p.member_ID
中的每个member_ID
和asset_ID
,将其加入p
中的匹配行。如果shares
/ {{1 }}存在于member_ID
但不存在asset_ID
,无论如何都会创建一行,并将相应的值设置为p
“。
shares
表示仅显示两个表中相关记录的连接行。
然后您可以与NULL
结合使用。