2011-12-28 76 views
0

下使用mysql如何从此数据库设计中检索用户帖子?

DB设计:

Users: 
- userId 
- userName 

Posts: 
- postId 
- text 

UserPosts (many-many): 
- userId (FK) 
- postId (FK) 

我想要检索的所有用户发布的所有信息。这正是我需要的:

- userName 
- text 

我不太知道如何写这个查询。我如何做这3种方式加入?

+4

因此,许多用户可以写一个帖子?这是什么样的系统?你不是过度工程师吗? – 2011-12-28 21:10:11

+1

@SergeiTulentsev一个用户可以写很多帖子。相同的帖子可以由其他用户转贴。想想Twitter。 – brainydexter 2011-12-28 21:12:36

+0

@SergeiTulentsev - 可能是我们所知道的某种wiki系统。 – JonH 2011-12-28 21:12:43

回答

-1
SELECT 
     u.userName, 
     p.Text 
FROM 
     UserPosts up 
INNER JOIN 
     Users u 
ON 
     u.userID = up.userID 
INNER JOIN 
     Posts p ON p.postID = up.postID 
0
select Posts.text, 
     Users.userName 
FROM UserPosts 
INNER JOIN Users on UserPosts.userId = Users.userId 
INNER JOIN Posts on UserPosts.postId = Posts.postId 
0
SELECT userName, text FROM Users,Posts,UserPosts 
WHERE 
UserPosts.userID = Users.userId AND UserPosts.postID = Posts.postID 
+0

水平滚动是邪恶的:-) – 2011-12-28 21:11:38

+0

因此,编辑! – Darvex 2011-12-28 21:12:29

+0

我明确地不会-1你,因为性能明智,他们是相同的使用'INNER JOIN'语法而不是你的解决方案。从可读性的角度来看,我更愿意明确指出JOIN类型。 – JonH 2011-12-28 21:18:55

相关问题