2014-02-08 2 views
0

친구의 방문 장소 찾기 위해 세 개의 테이블 사이에 가입 :나는이 방법으로 만든 세 개의 테이블이

사용자

을 | id | 사용자 이름 | img | |

기본 키 ID는하지만 사용자 이름은 고유 키

매핑입니다 id | 사용자 이름 | 주소 |

기본 키는 id입니다. 방문한 다양한지도 (도시) 사용자가 포함되어 있습니다.

친구

| id | user_req | user_acc | 상태 |

기본 키는 id입니다. |

: 두 사용자가 상태가 1


내가, 내 친구가지도 한 결과가이 같은 튜플이 필요한 경우에만 친구 사용자 이름 | img | 주소 |

이름

는 IMG 주소이 주소는

그녀의 프로필의 이미지입니다 그가해야

튜플을 방문한 장소 내 친구의 사용자 이름입니다 지도 테이블의 ID에 따라 내림차순으로 정렬됩니다.

나는 사용자의 친구를 찾을하는 데 사용되는 쿼리는 다음과 같습니다

 SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_req) 
     WHERE (user_acc = ? AND status = 1) 
     UNION DISTINCT 
     SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_acc) 
     WHERE (user_req = ? AND status = 1) 

?은 친구를 찾고 싶은 사용자입니다.

아무도 어떻게 해야할지 알고 있습니까? 고마워요

답변

1

추가지도에 가입 하시겠습니까?

SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_acc = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_req = ? AND f.status = 1) 
UNION DISTINCT 
SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_req = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_acc = ? AND f.status = 1) 
ORDER BY m.id DESC 
+0

답장을 보내 주셔서 감사합니다. 귀하의 쿼리를 실행하면 다음 오류가 나타납니다 ** 테이블 'u'가 존재하지 않습니다 **. u를 사용자로 바꿀 때 u2 ..에 문제가 있습니다. ( – user3287827

+0

Errr, oops. 사용자 테이블의 별명을 u로 지정하십시오.유를 넣어 둬서 사용자를 언급하는 것을 잊어 버렸습니다. 이제 해결되었습니다. – Kickstart

관련 문제