2012-06-30 6 views
3

내가 3 개 MySQL의 테이블을 조인하려고 많은 것을 가입; 친구, 사용자 및 댓글.MySQL은 두 테이블

users: 
id | firstName | lastName 
-------------------------- 
12 | edwin  | leon 
9 | oscar  | smith 
1 | kasandra | rios 

friends: 
userId | friendID 
---------------------- 
    12 | 9 
    9  | 12 
    12 | 1 
    1  | 12 

comments: 
commenter | comment | commentDate 
---------------------------- 
12  | hey  | Oct-2 
1  | Hmmmmmm | Nov-1 
9  | ok  | Nov-2 
9  | testing | Nov-2 
1  | hello | Dec-20  
1  | help  | Dec-20 

그럼 내가하려는 것은 사용자의 모든 의견을 선택하는 것입니다. 그래서 내가 출력하고자하는 친구가 만든 코멘트입니다 : 예 :

for edwin leon (id 12) it would output this 
friendID | comment | commentDate | firstName | lastName 
----------------------------------------------------------- 
    1  | Help  | Dec-20 | kasandra | rios 
    1  | Hello | Dec-20 | kasandra | rios 
    9  | testing | Nov-2 | oscar  | smith 
    9  | ok  | Nov-2 | oscar  | smith 
    1  | Hmmmm | Nov-1 | kasandra | rios 

이 모든 친구의 의견을 얻을 수 있지만 자신을 것입니다. 그것은, 당신이 오히려 사용자 ID보다 friendId에 사용자 테이블에 가입 할

+0

그럼 당신은'user.firstname''users.id = 12'을 선택하는 (나는 그것을 테스트하지 않았습니다)보십시오. – Ben

답변

3

그들 모두를위한 에드윈 레온을 대신 주석의 이름을 가져 오는 작업 나올까요

SELECT friends.friendID, users.firstName, users.lastName, comments.comment, comments.commentDate 
FROM users 
    JOIN friends ON friends.userID = users.id 
    JOIN comments ON comments.commenter = friends.friendID 
WHERE users.id = '12' AND comments.commenter != '12' 

: 여기 내 코드입니다 :

SELECT friends.friendID, users.firstName, users.lastName, comments.comment, comments.commentDate 
FROM users 
    JOIN friends ON friends.friendID = users.id 
    JOIN comments ON comments.commenter = friends.friendID 
WHERE friends.userID = '12' AND comments.commenter != '12' 

온라인으로 작업을 참조하십시오 : sqlfiddle

+0

여전히 오스만 레온은 lomas09 @ 이름 – lomas09

+0

로 반환 : 나는 그것이 작동하는지 증명하는 sqlfiddle을 게시했습니다. 링크를 클릭하고 직접보십시오. 아마도 WHERE 절도 수정 한 것을 알지 못했을 것입니다. –

+0

당신이 옳다는 것을 나는주의를 기울이지 않았다. 감사 – lomas09

0

을이 시도 ::

Select friendId, comment, commentdate, firstname, lastname 
from 
friends inner join comments on (friends.friendId=comenter) 
inner join users on (users.id=friends.friendId) 
where friends.userid=? 
0

이 당신이 친구가 대신 이름을 선택해야하므로

SELECT friends.friendID, u2.firstName, u2.lastName, comments.comment, comments.commentDate 
FROM users AS u 
    JOIN friends ON friends.userID = u.id 
    JOIN comments ON comments.commenter = friends.friendID 
    JOIN users AS u2 ON u2.id = friends.friendID 
WHERE u.id = '12' AND comments.commenter != '12'