[英]Get data from two mysql tables, where row of one table is connected to many in other
[英]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.