複数のSQLステートメントを1つの大きなステートメントに結合するのに問題があります。
問題: ニュースフィードがあり、ログインしたユーザーがフォローしているアカウントからすべての投稿を返す必要があります。また、ニュースフィードに投稿されたアカウントのユーザー名を取得するために、テーブルを他の2つのテーブルと結合する必要があります。このクエリで使用される4つのテーブルがあります。
フォロワー(フォローしているアカウントとフォローしているアカウントの種類を持つユーザーを一覧表示します)
重要な列:[user_id、following_id、type]
ユーザー(ユーザーは他のユーザーアカウントをフォローできます)
重要な列:[ユーザー名]
サーバー(ユーザーはサーバーアカウントをフォローすることもできます。ユーザーは自分のアカウントに関連付けられた0個以上のサーバーを作成できるため、ユーザーへのサーバーは1対多であることに注意してください)
重要なコラム:[タイトル]
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のみがWHEREnews_posts.poster_id=クエリ2の結果を記録するようにするにはどうすればよいですか。正しいユーザー名が使用されるように、フォロワーのタイプを考慮する必要があります
編集:スキーマの大まかなバージョンは次のとおりです:http ://sqlfiddle.com/#!2 / a48f3 / 1