このMySQLステートメントを実行するための最良の方法を見つけるのに苦労しています。
最初のテーブル「friends」には、userID、friendID、およびstatusがあります
2番目のテーブル'users'には、firstName、lastName、userIDがあります
3番目のテーブル'users_temp'にはtempUserID、tempUserNameがあります
1つのクエリでuserIDまたはfriendID=1の「friends」からすべてをプルして他のフィールド(userID = 1の場合はfriendIDを取得するか、friendID = 1の場合はuserIDを取得する)を「users」/「users_temp」に結合することを検討しています。ここで、そのuserID = users.userIDであり、存在する場合はusers_tempに参加します。
今私はこれを持っていますが、それは間違った結果を返し続けます。また、返されるuserIDは一意である必要があるため、ユーザーごとに1つだけ返します(これはフレンドリストであるため)
SELECT users.userid,
users.fbid AS fbID,
users.firstname AS firstName,
users.lastname AS lastName,
users.phonenumber AS phoneNumber,
users.avatar AS avatar,
users_temp.tempusername AS tempUserName,
status,
friendid
FROM users
JOIN (SELECT friendid,
userid,
status
FROM friends
WHERE friendid = $userid
AND ( ( status != 2 )
AND ( status != 3 ) )
UNION ALL
SELECT friendid,
userid,
status
FROM friends
WHERE userid = $userid
AND ( ( status != 2 )
AND ( status != 3 ) )) foo
ON users.userid = foo.userid
LEFT JOIN users_temp
ON users.userid = users_temp.tempuserid
私はsqlfiddleを作成しましたが、これが私のsqlセットアップをさらに説明することを願っています
http://sqlfiddle.com/#!2/690c3/4
どんな助けでも大歓迎です!
ありがとう、
ウェス