繁体   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