id、email、username、firstname、lastnameの各フィールドを持つusersという名前のテーブルがあります。
フィールドid、user1、user2、およびrelationshipを持つfriendsという名前の別のテーブルがあります。
私はこの結合クエリで本当に苦労していますが、それほど難しいことではありません:(。
まだあなたと関係のない最も人気のあるユーザーを見つけたいです。たとえば、関係配列がすでに生成されていて、ユーザー情報と、まだあなたに関係のないユーザーである関係の量を見つけたいと思います。
これまでの私のクエリですが、何らかの理由で機能させることができません。
select id, email,username,firstname,lastname
from users as userInformation
left join (select count(*)
from friends
where friends.user1 = userInformation.id or friends.user2 = userInformation.id
) as x
where users.id NOT IN (2,44,26,33,1)
パーツの「2,44,26,33,1」はnot in
、ログインしているユーザーによって任意です。
私が正しく動作することができない部分は、関係カウントを追加する左結合です。
手伝うために、ここに機能する2つのクエリがあります。2番目のユーザーを結合して、各ユーザーの最初のクエリの列にする必要があります
select id, email,username,firstname,lastname from users where id NOT IN (2,44,26,33,1)
select count(*) from friends where user1 =2 or user2 = 2
ただし、2番目のクエリは、最初のクエリのIDごとに行う必要があります。それがそれをクリアすることを願っています。
これは近づいています
select id, email,username,firstname,lastname
from users as help
left join (
select count(*)
from friends
where user1 = help.id or user2 = help.id) as friendCounter
where help.id NOT IN (2,44,26,33,1)
何らかの理由で、最後のwhere句でhelp.idを認識しません。