이 MySQL 문을 수행하는 가장 좋은 방법을 찾지 못했습니다.union이 잘못된 결과를 반환하는 MySQL 쿼리
첫 번째 표 '친구'는 사용자 ID, friendID 및 상태가
두 번째 테이블 '사용자'는 이름, 성, 사용자 ID
'users_temp가'tempUserID를 가지고 세 번째 테이블, tempUserName
있다나는 'users'또는 'friendID = 1'인 'friends'에서 모두 하나의 쿼리를 가져오고 다른 필드에 가입하려고합니다. (사용자 ID = 1이면 friendID를, 그렇지 않으면 friendID = 1, 사용자 ID를 가져올 경우) 'users'/ 'users_temp' '여기서 해당 userID = users.userID 및 존재하는 경우 users_temp 조인합니다.
지금 당장 가지고 있지만 잘못된 결과가 계속 표시됩니다. 또한 반환 아이디 (이가 친구 목록이기 때문에) 그래서 난 그냥 내가 더 내 SQL 설치 설명 할 것입니다 희망 sqlfiddle을 만들어
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
사용자 당 1을 반환 고유해야합니다
http://sqlfiddle.com/#!2/690c3/4
도움이 될 것입니다.
감사합니다,
웨스
흠 ..'UNION ALL' 대신에'UNION'을 시도해보십시오. – Kermit
그걸로 운이 없음. – Wes