我的其中子句假設獲取所有狀態更新並檢查發佈它們的用戶是否針對阻塞表。WHERE子句需要附加子句 - 我認爲
只要用戶沒有被登錄的用戶阻止,就讓狀態顯示出來。
其中子句當前詢問如果狀態應該顯示,該塊應該不活動,這是正確的。
問題是,在目前,如果任何用戶對某人有活動阻滯,結果將不會顯示爲活動,說是。
實施例:
採取3個用戶;
湯姆,比爾和約翰。
顯示所有狀態更新。
如果湯姆塊比爾,湯姆不再能看到比爾更新和比爾無法看到湯姆。 - (這是應該的了。)
但現在因爲對比爾積極塊由湯姆,約翰看不到他的任何更新。
我的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.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.user
WHERE
tbl_status.deleted = '0'
AND (tbl_blocking.user IS NULL
OR (tbl_blocking.active = '0'
AND tbl_blocking.user != :who
AND tbl_blocking.blocking != :who))
ORDER BY
tbl_status.date desc
LIMIT 200
";
「WHERE tbl_blocking = 'X'」 原來是什麼外部聯接成一個內圈之一。將這些條件移動到JOIN子句(NULL值可以保留在它的位置!)。並閱讀表別名。 – Strawberry
我不太明白。你能再解釋一下嗎?我對此有點新。這不是WHERE子句,它是JOIN? –