[英]PHP MySQL double inner join
我有三張桌子:
帖子
注釋
回復
我正在嘗試使用post.user_id=x
從每個post.post_id
獲取所有評論和回復。
我試過了:
SELECT *
FROM posts AS p
INNER JOIN comments as c
ON c.comment_id=p.post_id
INNER JOIN replies as r
ON r.reply_id=p.post_id
WHERE
p.user_id='x'
返回0 ...
解決方案是
SELECT *
FROM POSTS A
LEFT JOIN COMMENTS B ON A.POST_ID=B.COMMENT_ID
LEFT JOIN REPLIES C ON A.POST_ID=C.REPLY_ID
WHERE A.USER_ID='X'
因此,如果我在評論和回復表中添加了已刪除的列,我如何檢查我收到的評論或回復是否未被刪除?
我嘗試在A.USER_ID='X' && B.deleted='0' && C.deleted='0'
之后添加
但它返回 0。
您在 model 中缺少關鍵關系。 您需要在 post_id 的回復和評論中有一列,然后加入 post_id 上的表。
進行此更改后,您的查詢將如下所示:
SELECT c.*, r.*
FROM posts p
INNER JOIN comments c ON p.id=c.post_id
INNER JOIN replies r ON p.id=r.post_id
WHERE p.user_id=$user_id
嘗試使用左連接而不是內連接。 這將確保 POSTS 表中與 WHERE 條件匹配的所有行都存在。
SELECT *
FROM POSTS A
LEFT JOIN COMMENTS B ON A.POST_ID=B.COMMENT_ID
LEFT JOIN REPLIES C ON A.POST_ID=C.REPLY_ID
WHERE A.USER_ID='X'
據我所知,所有表中都缺少post_id 。 身份證太多了。
更改您的表格,使關系變得明顯,然后您可以很容易地提取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.