すべてのツールとCMSが周りにあるので、アプリケーションを作成するのはいつも簡単でした。ORMを使用せずに高度なSQLを使用する必要があるのは初めてですが、探している結果を取得する方法がわかりません。
ユーザーフレンドシステムを作ろうとしています。基本的に、ユーザーは別のユーザーを友達として追加でき、友達のユーザーは受け入れることができます。UsersとUsers_Relationshipsの2つのテーブルがあります。Usersテーブルには明らかなユーザー情報があり、User_Relationshipsテーブルにはrelation_setter(リクエスターユーザーのID)、relation_getter(リクエスターユーザーのID)があり、アクティブです。
問題は、ページにすべての友達(アクティブまたは非アクティブ)を表示する必要があることです。次のクエリが間違っていることは知っていますが、これが私が思いついたものです。
$sql = "SELECT *
FROM users_relationships
LEFT JOIN users
ON users_relationships.relation_setter = users.user_id
WHERE users_relationships.relation_getter = " . $logged_in_id.
" OR users_relationships.relation_setter = " . $logged_in_id;
私が必要としているのは、$logged_in_userを持つセッターまたはゲッターとしてリレーションシップテーブルにいるすべてのユーザーです。誰が追加したか、私または彼らに関係なく、友達のすべての人が必要です。各行で取得した「アクティブ」値に基づいて、「リクエスト保留中」と表示されます。
上記のクエリは、非常に複雑な結果をもたらし、多くの重複があり、保留中のリクエストも間違っています。