私はクエリの能力を向上させようとしていますが、中程度の複雑さの結合については頭を悩ましています。可能な限り明確かつ簡潔にするために、私は3つのテーブルに参加しようとしています。最初の参加、私は3番目の表を参照したい。この後users.User_ID = posts.FK_User_ID3つのテーブルを結合してそのうちの1つにカウントを使用
**User table**
User_ID pk
username int
email
etc...
**Post Table**
post_ID PK
User_ID FK
Post
etc...
**Like Table**
FK_User_ID references user.user_ID
FK_Post_ID references post.Post_ID (*This is what I want to count*)
上のすべてのユーザーからの投稿を選択します。この表には、ユーザー表のuser_IDへの外部キーと、ポスト表の主キーPost_IDを参照するFK_Post_IDの外部キーが含まれています。この3番目の表は、投稿を好きなユーザーのリンクテーブルです。私は、この表にポストIDのすべてのオカレンスをカウントし、初期ユーザーに各ポストに追加し、ポストに参加したいので、出力結果は次のようになります。
User_id Username Post_ID Post Number_of_Likes
1 bob 4 'foo' 18
私の最初の2つのテーブル間の結合を作品そして今、私はポストのIDのようなテーブルに表示された回数の合計#をカウントし、各列に付加する第三のテーブルを参照する方法が必要
select * from users
join post
on post.User_ID=users.User_ID
(例えば*と簡体字)、このようになります。 。これは私が失われた場所です、私は運がないことをたくさん試しています。私は2回目のジョインのために内部ジョイン句を構築する必要があると考えているか、ネストされたselectステートメントを取り除く必要がありますか?私が間違っている場合、誰かが私にこれを修正して、おそらく正しい方向に私を導くことができますか?感謝します!
使用するdbmsにタグを付けることができますか? –
あなたは、結合の前に3番目のテーブルからカウントを得るためにサブクエリするか、3つのテーブルから 'count(Distinct Primary.keyField)'を使うか、またはウィンドウ関数 'count()over(論理キー) 'DBMS&Versionは、サブクエリがすべてのRDBMSで機能しますが、どのオプションが利用できるかを定義するのに役立ちます。 – xQbert
予想される出力に加えて、テーブル定義といくつかのサンプルデータの投稿を検討してください。 – mustaccio