以下の SQL ステートメントは、ユーザーの profile_id#s を使用してフレンドシップ テーブルをクエリすることにより、2 つのユーザー要素間のフレンドシップを検索しますが、最近作業ステートメントに追加した行はLEFT OUTER JOIN block_user_filters AS blockedusers on blockedusers.profile_id_1 = 'abcde2'
、ユーザー abcde2 が誰かをブロックしているかどうかを確認する場所でした。これらのフレンドシップをLEFT OUTER JOIN block_user_filters AS blockedusers on blockedusers.profile_id_1 = 'abcde2'
、ユーザー abcde2 のブロック行が取り込まれたブロック テーブルがある where 句のテーブルから別のフレンドシップ ユーザー要素にフィルター処理したいのですが、ステートメント全体が 0 行を返しています。可能であれば、これを修正するのを手伝ってください。ありがとうございました
SELECT
users1.username AS firstusername,
users2.username AS secondusername,
users1.profile_id AS firstprofid,
users2.profile_id AS secondprofid,
users1.picup AS firstpicup,
users2.picup AS secondpicup
FROM `users`
LEFT OUTER JOIN `friendship`
ON friendship.profile_id_1 = users.profile_id OR friendship.profile_id_2 = users.profile_id
LEFT OUTER JOIN users AS users1 ON users1.profile_id = friendship.profile_id_1
LEFT OUTER JOIN users AS users2 ON users2.profile_id = friendship.profile_id_2
LEFT OUTER JOIN block_user_filters AS blockedusers on blockedusers.profile_id_1 = 'abcde2'
WHERE users.profile_id = 'abcde2' and blockedusers.profile_id_1 != 'abcde2' and friendship.state = 1 limit 6
編集: 回答とコメントをありがとう、しかし残念ながら試行が null の後でさえ、それはまだ 0 行を返します。 .profid_1 または _2)、それらを UNION と組み合わせますが、これはさらに奇妙な結果になります。頭をまとめる必要があるだけです...
SELECT users1.username AS firstusername, users.username AS secondusername,
users1.profile_id AS firstprofid, users.profile_id AS secondprofid,
users1.picup AS firstpicup, users.picup AS secondpicup
FROM `users`
LEFT OUTER JOIN `friendship` ON friendship.profile_id_2 = users.profile_id
LEFT OUTER JOIN users AS users1 ON users1.profile_id = friendship.profile_id_1
LEFT OUTER JOIN block_user_filters AS blockedusers on blockedusers.profile_id_1 = 'abcde2'
WHERE users.profile_id = 'abcde2' and blockedusers.profile_id_2 != friendship.profile_id_1 and friendship.state = 1
UNION
SELECT users.username AS firstusername, users.username AS secondusername,
users.profile_id AS firstprofid, users2.profile_id AS secondprofid,
users.picup AS firstpicup, users2.picup AS secondpicup
FROM `users`
LEFT OUTER JOIN `friendship` ON friendship.profile_id_1 = users.profile_id
LEFT OUTER JOIN users AS users2 ON users2.profile_id = friendship.profile_id_2
LEFT OUTER JOIN block_user_filters AS blockedusers on blockedusers.profile_id_1 = 'abcde2'
WHERE users.profile_id = 'abcde2' and blockedusers.profile_id_2 != friendship.profile_id_2 and friendship.state = 1