2014-08-30 5 views
0

내 테이블 "팀"에는 플레이어의 고유 ID (player_1, player_2, player_3, player_4, player_5)와 내 테이블 "플레이어"에 해당 플레이어의 이름에 대한 ID 리퍼러가 있습니다. 검색 스크립트의 경우 예를 들어 (이름으로 검색) : 여기 MySQL은 2 테이블을 ID로 결합합니다

The user write "foo" but "foo" is ID 20. 

"teams" ID 1 => player_1 ID = 20 
"players" player_id = 20 > name = foo 

내 쿼리입니다 :

$sql = 'SELECT * FROM teams LEFT JOIN players ON players.name LIKE :word'; 

하지만 wan't대로 작동하지 않았다 ...

+0

조건부 표현식이 필요합니다. http://dev.mysql.com/doc/refman/5.1/en/join.html :) ... p.s.를 참조하십시오. 귀하의 LIKE 표현도 유선처럼 보입니다. (http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html을 확인하십시오.) – Trinimon

+0

두 테이블을 연결하는 데 '켜기' 당신은 테이블에 조인하는 데 사용 된 컬럼을 제공해야한다. 대신 WHERE 조건은 당신이 컬럼과 컬럼을 비교하는 데 필요한 것이다. – Fabio

답변

0

아래 쿼리를 시도하십시오

select * from teams as tm,players as py where tm.player_1=py.player_id and py.name LIKE 'foo%' 

팀 테이블에 가입해야하는 이유는 무엇입니까? 당신은 플레이어 테이블을 사용하여 이름으로 검색을 사용할 수 있습니다.

0

ID = player_id에 가입하고 이름으로 검색 :

select * from teams join players using (player_id) where name like '%S.'; 
+-----------+---------+---------+ 
| player_id | team_id | name | 
+-----------+---------+---------+ 
|   3 |  2 | Adam S. | 
|   5 |  1 | Jim S. | 
+-----------+---------+---------+ 
2 rows in set (0.01 sec) 
: 당신이 두 테이블에서 같은 필드 이름을 사용하는 경우

select * from teams join players on player_id = ID where name like 'Adam%'; 
+-----------+---------+----+---------+ 
| player_id | team_id | ID | name | 
+-----------+---------+----+---------+ 
|   1 |  1 | 1 | Adam G. | 
|   3 |  2 | 3 | Adam S. | 
+-----------+---------+----+---------+ 

sqlfiddle

, 당신은 열을 기준으로 가입 할 수 있습니다

sqlfiddle

관련 문제