簡體   English   中英

從2個表中獲取數據,其中一個表與另一個表相關

[英]Get data from 2 tables where one table is dependent of the other

主表:“帖子”。
結構體:

id || text || time || user_id


次要表格:“喜歡”。
結構體:

id || post_id || time || user_id


在這里,第二個表中的post_id可以(&必須)是第一個表中的ID。 我想運行一個查詢,從特定的user_id的posts表中獲取所有ID,並從特定的user_id的likes表中獲取所有POST_ID。

這是我嘗試過的方法,但它僅從posts表中獲取ID,而從likes表中未獲取任何內容:

"SELECT id FROM posts WHERE id IN (SELECT post_id FROM likes WHERE user_id=$userid) OR id IN (SELECT id FROM posts WHERE user_id=$userid)"

但是,當我最后刪除OR語句時,會從likes表中獲取post_id:

"SELECT id FROM posts WHERE id IN (SELECT post_id FROM likes WHERE user_id=$userid)"

我究竟做錯了什么? 請幫忙。 非常感激。 謝謝!

額外:

有什么辦法以ID的降序對其進行排序?

如果我通過“ p.id DESC”對它們進行排序,那么來自點贊表的所有post_id都會顯示在底部。

例如,
帖子表中有7個ID(1、2、3、4、5、9、10),
點贊表中的3個(6、7、8)。

當前它顯示如下:10、9、5、4、3、2、1、6、7、8。

怎樣顯示:10、9、8、7、6、5、4、3、2、1? 謝謝!

使用加入

SELECT id FROM posts 
LEFT JOIN likes ON posts.id = likes.post_id 
WHERE likes.user_id = $userid

如果您想從發布表中獲取ALL ID,可以在這種情況下嘗試mysql LEFT JOIN ,否則,簡單的INNER JOIN將完成您的任務。

SELECT p.id,l.post_id FROM posts p 
   LEFT JOIN likes l ON p.id=l.post_id 
WHERE p.user_id=$userid OR l.user_id=$userid

編輯:

SELECT p.id FROM posts p 
LEFT JOIN likes l ON p.id=l.post_id 
WHERE p.user_id=$userid OR   
l.user_id=$userid
ORDER BY p.id DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM