2012-04-25 136 views
0

我想根据登录的用户所关注的人来选择来自用户的帖子。我需要做什么?如何在一条SELECT语句中使用两个不同的表?我甚至不知道从哪里开始。使用MySQL select语句

我有3个表: 用户 帖子 追随者

感谢。

+0

什么是你的表格结构? – Shyju 2012-04-25 19:45:35

+0

请提供创建表的SQL,然后可以提供帮助。但它的要点是你使用外键和主键进行连接。 – 2012-04-25 19:46:34

+0

这似乎是它在一小时前为您详细解答:http://stackoverflow.com/questions/10321532/using-an-array-in-an-sql-query – 2012-04-25 19:56:36

回答

0
SELECT p.* 
FROM followers f 
JOIN posts p 
ON  p.author = f.following_id 
WHERE f.user_id = $logged_in 
ORDER BY 
     p.post_date DESC 

我必须补齐字段名称,因为您没有提供它们。

+0

嗨Quassnoi,如果想要得到用户自己的帖子以及他们正在关注的内容,我将如何将其添加到您的查询中?谢谢:) – Saff 2012-11-21 14:52:07

+1

@SaffronHarris:请张贴它作为另一个问题。 – Quassnoi 2012-11-21 15:23:32

+0

谢谢,我已经发布在这里http://stackoverflow.com/questions/13502671/ar-get-own-posts-and-friends-posts – Saff 2012-11-21 21:56:41

0

我将与加入查询去,因为Quassonoi在他的回答表明,如果你想尝试另一种解决方案,你可以用子查询像这样做

SELECT P.PostId,P.Title,P.Body 
FROM Post P WHERE P.CreatedById 
IN ( 
    SELECT FollowerID from Followers WHERE USER_ID=3 
    ) 

更换3与当前用户ID。假设你的表结构是这样的。

POST

PostId (int) 
Title 
Body 

关注

UserId (int) 
FollowerId (int) 
0

选择两个表中的使用做JOIN的 http://dev.mysql.com/doc/refman/5.0/en/join.html

基本上你从两个表中选择并定义连接条件。

假设你有两个表:

  • 用户列:USER_ID,USER_NAME,online_state
  • 帖子的列:POST_ID,USER_ID(用户谁张贴了这个帖子),标题,消息

SELECT p.title,p.message FROM users u JOIN posts p ON u.user_id = p.user_id WHERE u.online_state ='online'

连接条件应该在ON之后,非j oin状态在哪里

+0

你也可以做SELECT ... FROM表JOIN table2 ON条件JOIN table3 ON条件JOIN table4 ON条件。 – Kveri 2012-04-25 19:51:39

+0

连接优于子查询,因为您不强制数据库评估整个子查询,尤其是使用从属子查询是邪恶的 – Kveri 2012-04-25 19:52:52