从 2 table 中获取数据,其中一个 table 依赖于另一个

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

主要Table:'posts'。
结构:

id || text || time || user_id


中学 table: 'likes'.
结构:

id || post_id || time || user_id


在这里,第二个 table 中的 post_id 可以(并且必须)是第一个 table 中的 ID。我想 运行 一个查询,我将从特定 user_id 的 posts table 中获取所有 ID,并从喜欢的 [=] 中获取所有 POST_IDs 60=] 的特定 user_id.

这是我尝试过的方法,但它只从 post 中获取 ID table,没有从 table 中获取任何 ID:

"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 语句时,从喜欢的 table 中提取了 post_id:

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

我做错了什么?请帮忙。非常感激。谢谢!

额外:

有什么方法可以按 ID 的降序排列它们吗?

如果我按 "p.id DESC" 订购它们,那么来自喜欢 table 的所有 post_id 都会出现在底部。

例如,
post table (1, 2, 3, 4, 5, 9, 10),
中有7个id 3 个赞 table (6, 7, 8).

目前显示为:10, 9, 5, 4, 3, 2, 1, 6, 7, 8。

如何显示如:10, 9, 8, 7, 6, 5, 4, 3, 2, 1?谢谢!

使用 JOIN

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

如果您想从 post table 获取 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