我試圖在聯接查詢中添加一個新案例,但它不影響結果。多個案例的內部聯接查詢
我有一個用戶帖子的表,查詢檢查誰是用戶的朋友(通過user_id),然後檢查帖子是否被標記了5次或更多次。 '直到這裏工作正常。我希望現在檢查帖子是否公開。所以在這種情況下,它應該忽略友誼情況。
工作查詢新增加的情況下才:
$sql = "SELECT COUNT(*) AS count_posts
FROM mutamba_posts
INNER JOIN
(
SELECT aluno_id
FROM mutamba_amigos
WHERE mutamba_amigos.amizade_id IN
(
SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}'
)
GROUP BY aluno_id
) mutamba_amigos ON mutamba_amigos.aluno_id = mutamba_posts.aluno_id
WHERE mutamba_posts.post_flags < 5
ORDER BY mutamba_posts.post_date DESC";
添加的新情況檢查(什麼都不做)後:
$sql = "SELECT *
FROM mutamba_posts
INNER JOIN
(
SELECT aluno_id
FROM mutamba_amigos
WHERE mutamba_amigos.amizade_id IN
(
SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}'
)
GROUP BY aluno_id
) mutamba_amigos ON mutamba_amigos.aluno_id = mutamba_posts.aluno_id
WHERE mutamba_posts.post_flags < 5
OR (mutamba_posts.post_visibility = 'show_all' AND mutamba_posts.post_flags < 5)
ORDER BY mutamba_posts.post_date DESC
LIMIT {$start}, {$limit}";
會明白任何幫助。
編輯2:我很抱歉花了很長時間回來,我不在。
這裏是我的表格和一些示例數據。
帖子TBL:
post_id| aluno_id | post_text | post_flags | post_visibility |post_date
--69---|-----9----|Hello world|------0-----|------show_all-- |2015-01-19
--70---|-----2----|Hi friends |------0-----|------friends----|2015-01-19
--71---|-----1----|somedays.. |------2-----|------friends----|2015-01-19
友誼TBL:
id | aluno_id | amizade_id | bloqueado | date
24 |----2-----|-----33-----|-----0-----|2015-01-02
25 |----1-----|-----34-----|-----0-----|2015-01-02
26 |----1-----|-----35-----|-----0-----|2015-01-02
27 |----2-----|-----35-----|-----0-----|2015-01-02
28 |----9-----|-----36-----|-----0-----|2015-01-02
預期的輸出,學生1和2(aluno_id 1和aluno_id 2)將能夠看到自己的崗位,因爲他們是朋友和學生9 aluno_id 9的帖子,因爲它設置爲show_all
。然而學生9 aluno_id 9
只能看到他自己的帖子,因爲他沒有朋友。
'其中x OR(Y和X)'相同'WHERE x'。 – Barmar