我无法将几个 sql 语句组合成一个更大的单个语句。
问题: 我有一个新闻提要,需要返回登录用户关注的帐户中的所有帖子。我还需要将一个表与其他两个表连接起来,以获取发布在新闻提要上的帐户的用户名。我有 4 个表将在此查询中使用:
关注者(列出用户及其关注的帐户和被关注的帐户类型)
重要列:[user_id,following_id,类型]
用户(用户可以关注其他用户帐户)
重要列:[用户名]
服务器(用户也可以关注服务器帐户。请注意,用户的服务器是一对多的,因为用户可以创建 0 个或多个与其帐户绑定的服务器)
重要栏目:[标题]
News_Posts(这包含消息、帐户类型(整数)和 poster_id)
重要栏目:[poster_id, message, type]
我不知道如何获取当前登录用户的新闻帖子。
查询 1:根据“类型”返回具有正确用户名的完整新闻列表 0 = 用户,1 = 服务器
SELECT news_posts.*, users.username FROM news_posts INNER JOIN users ON news_posts.poster_id=users.id WHERE news_posts.TYPE='0'
UNION
SELECT news_posts.*, servers.title FROM news_posts INNER JOIN servers ON news_posts.poster_id=servers.id WHERE news_posts.TYPE='1'
查询 2:返回特定用户(在本例中 id 为 1)正在关注的帐户
SELECT following_id, type FROM follower WHERE user_id='1'
我如何将查询 1 与查询 2 结合起来,以便只有 news_post 记录 WHERE news_posts.poster_id = 查询 2 结果。它必须考虑追随者的类型,以便使用正确的用户名
编辑:这是模式的粗略版本:http ://sqlfiddle.com/#!2/a48f3/1