:MySQL의 결합 세 개의 테이블 내가처럼 보이는 세 개의 MySQL의 테이블을 사용하고 있습니다 문제
이회원의 표는 친구의 목록을
| id | name | status |
-------------------------------------------
| 1 | mike | 0 |
| 2 | peter | 1 |
| 3 | john | 1 |
| 4 | any | 1 |
표 계정을 :
| myid | user | date |
------------------------------------------
| 10 | 2 | 2010-01-04 |
| 3 | 10 | 2010-09-05 |
| 4 | 10 | 2010-10-23 |
사용자 갤러리 용 테이블 :
| fotoid | userid | pic1 |
------------------------------------------
| 101 | 2 | 1.jpg |
| 102 | 3 | 2.jpg |
| 103 | 4 | 3.jpg |
이 세 테이블에 가입하여 친구 목록에 추가 한 사용자와 내가 동시에 목록에 추가 한 사용자를 나열하는 쿼리 결과를 얻으려는 경우이 사용자는 모두 '1'상태 여야합니다. 회원 테이블과 갤러리 테이블에서 자신의 사진을 표시합니다.
이 예제에서 내 ID는 '10'입니다. 갤러리 필드의 표에서 'MyID'는 친구에게 다른 사용자를 추가 한 사용자를 나타내며 '사용자'는 추가 된 사용자의 ID입니다.
이 예에서 최종 결과가 같아야합니다 :
| id | name | status | pic1 |
------------------------------------------------
| 2 | peter | 1 | 1.jpg |
| 3 | john | 1 | 2.jpg |
| 4 | any | 1 | 3.jpg |
내가 어떻게 할 수 있습니까?
MySQL은 EXPLAIN :
id | select_type | table | type | possible_keys | key | key_len | ref | rows | extra
-------------------------------------------------------------------------------------------------------------------------------------------------
1 | primary | g | ALL | id | NULL | NULL | NULL | 7925 | Using where
1 | primary | a | eg_ref | id | id | 4 | g.id | 1 | Using where
2 |DEPENDENT SUBQUERY| a2 | index | id | NULL | NULL | NULL | 90734 | Using index; Using temporary; Using filesort;
2 |DEPENDENT SUBQUERY| f | index | rds_index |rds_index| 8 | NULL | 138945 | Using where;Using index;Using join buffer
가입 할 수없는 이유를 배울 필요가 없다면 여기에서 필요한 것을 얻을 수 있습니다. http://dev.mysql.com/doc/refman/5.1/en/join.html – cristian