2012-07-29 5 views
0

두 개의 테이블이 있습니다.두 번째 테이블의 키를 사용하여 여러 행을 별도의 열로 병합

사용자 :

int player_id 
varchar player_name 

게임 :

int game_id 
int player_id1 
int player_id2 

내가 매개 변수로 플레이어 ID에 걸리는 쿼리를 만들고 싶어,와 함께, 각 게임에 대한 정보를 반환 플레이어의 이름과 함께.

SELECT 
    game_id, 
    player_id1, 
    player_id2, 
from GAMES, GAME_STATES 
where [email protected] or [email protected] 

난에 붙어있어 부분이 플레이어 식별자와 함께 선수의 이름을 반환해야하는 간단한 방법입니다 : 지금까지 내가 가지고있는 것은 다음과 같다. 반환되는 쿼리에는 5 개의 열이 있습니다. 하나는 게임 ID이고 다른 하나는 각 플레이어 ID이고 두 개는 각각의 이름입니다. 내가 생각

하나의 솔루션은 다음과 같습니다 행이 반환 당 2 개 쿼리가있을 것이기 때문에

SELECT 
    game_id, 
    player_id1, 
    (select player_name from USERS where player_id=player_id1) as player_name1, player_id2, 
    (select player_name from USERS where player_id=player_id2) as player_name2, 
from GAMES, GAME_STATES 
where [email protected] or [email protected] 

그러나,이 데이터베이스에 추가 작업을 많이처럼 보인다. 그 일을해야한다면 클라이언트 측에서 두 번째 쿼리 이름을 요청하는 것이 더 나은 선택인지 궁금합니다. 그런 다음 클라이언트는 고유 ID 목록을 작성하고 모든 ID에 대해 하나의 조회를 수행 할 수 있습니다. 클라이언트와 서버가 동일한 데이터 센터에 있으므로 대기 시간에 대해 너무 걱정하지 않습니다.

도움 주셔서 감사합니다.

+0

을해야합니까? – Zoey

답변

0

SELECT game_id, u1.player_name, u2.player_name FROM games AS game INNER JOIN users AS u1 ON y1.playerid = game.player_id1 INNER JOIN users AS u2 ON u2.playedid = game.player_id2 WHERE player_id1 = @playerid OR player_id2 = @playerid

나는 것보다 더 잘 설명하는 방법을 알고 사람들을 위해, 순서에 내가 가입 믿고 트릭

관련 문제