2つのテーブルがあり、そこからユーザーデータを取得したいと思います。
表1 : frei_session
username session_id
Prince 51
Dilip 49
Sumit 50
表2: friendrequest
requestTo requestFrom status
49 50 C
50 51 C
49 51 P
friendrequestテーブルは、 CがCompleteを表し、 PがPendingを表すユーザー間の関係を示します。status = C
両方が友達であり、status = P
リクエストが保留中の場合を意味します。
frei_sessionテーブルには、Webサイトのすべてのオンラインユーザーが表示されます。
友達とのチャットだけに制限したい。次のクエリを試しましたが、オンラインのすべてのユーザーが表示されます
ユーザー49がオンラインであると仮定します
SELECT DISTINCT f.username,f.session_id
FROM frei_session AS f
LEFT JOIN friendrequest AS fr ON fr.requestFrom=f.session_id
LEFT JOIN friendrequest AS frnd ON frnd.requestTo=f.session_id
WHERE (fr.requestFrom<>49 OR frnd.requestTo<>49) AND (fr.status = 'C' OR frnd.status = 'C')
このクエリは、このような出力を表示します
username session_id
Prince 51
Sumit 50
でもこんな出力が欲しい
username session_id
Sumit 50
ユーザー51とユーザー49は友達ではないため