如果我阻止用户,我的状态会输出多次。没有其他人,只有我的。
如果我阻止3个用户,我的状态更新会出现3次(重复相同的状态)。 如果我阻止10个用户,我的状态会重复10次。
这一定是那个血腥的WHERE子句......对吧?
//Get status results
$sql = "SELECT
tbl_status.id as statID,
tbl_status.from_user as statFROM,
tbl_status.status as statSTATUS,
tbl_status.deleted as statDEL,
tbl_status.date as statDATE,
tbl_users.id as usrID,
tbl_users.name as usrNAME,
tbl_users.location as usrLOCATION,
tbl_users.postcode as usrPOSTCODE,
tbl_blocking.id as blockID,
tbl_blocking.user as blockUSER,
tbl_blocking.blocking as blockBLOCKING,
tbl_blocking.date as blockDATE,
tbl_blocking.block_by as blockBY,
tbl_blocking.active as blockACTIVE
FROM tbl_status
INNER JOIN tbl_users ON tbl_status.from_user = tbl_users.id
LEFT JOIN tbl_blocking ON tbl_users.id = tbl_blocking.blocking
WHERE
tbl_status.deleted = '0'
AND tbl_blocking.user != :who
OR tbl_blocking.user IS NULL
ORDER BY
tbl_status.date desc
LIMIT 200
";
答案 0 :(得分:1)
您的WHERE条件混合AND和OR,评估的优先级,NOT - AND - OR
这是您当前的状况,为了清晰起见添加括号:
WHERE
(tbl_status.deleted = '0' AND tbl_blocking.user != :who)
OR tbl_blocking.user IS NULL
你可能想要这个内容:
WHERE
tbl_status.deleted = '0'
AND (tbl_blocking.user != :who OR tbl_blocking.user IS NULL)