2012-07-31 4 views
0

내가 원하는 것은 게임 플레이어가 아닌 플레이어 캐릭터를 검색해야하며, 쫓고있는 ID를 저장하는 target_id라는 필드가 있습니다.테이블 참조 자체가있는 Mysql

given: 
table mobs with fields and some example data 
id x y target_id 
1 1 1 2 
2 3 3 1 
내가 쿼리

id x y target_id target_x target_y 
1 1 1 2   3  3 
2 3 3 1   1  1 

이 다음과 같은 데이터를 반환하고 싶습니다

내가 뭘하려하지만 내가 알고로

SELECT id,x,y,target_id, target.x, target.y FROM mobs LEFT JOIN mobs AS target ON  target_id=id FROM mobs WHERE 1 
+0

'FROM mobs'초를 제거하십시오. 마지막으로 – Charleh

+0

에 'ON'이 누락되었습니다. – jcho360

+0

@ jcho360 - 아니요. '켜짐'이 있습니다. – Lamak

답변

2

쿼리에 별칭을 추가했지만, 나는 이것이 당신이 원하는 무엇이라고 생각 :

향후
SELECT M.id, M.x, M.y, M.target_id, T.x, T.y 
FROM mobs AS M 
LEFT JOIN mobs AS T 
ON M.target_id = T.id 

, 당신 테이블 정의 및 예상 결과를 게시하여 질문이 더 명확해야합니다.

+0

+1 나를 때리고 바로 처음으로 점점 :) – Charleh

+0

내 테이블은 게임 응용 프로그램을위한 것이므로 실제 테이블 정의를 게시하지 않았으므로 약 70 개의 필드가 있습니다. – Shawn

+0

@Shawn - Wee는 전체 테이블 정의가 필요하지 않으며 문제를 이해하고 해결 방법을 생각하는 데 필요한 필드 만 필요합니다. 이 경우 테이블과 'id, target_id, x, y' 열을 게시 할 수 있습니다 – Lamak

2

올바른 구문까지 구문 오류가 있습니다 :

SELECT mobs.id, mobs.x, mobs.y, mobs.target_id, target.x, target.y 
FROM mobs 
LEFT JOIN mobs AS target 
ON  mobs.target_id = target.id 

You 've 've 'JOIN'이라고 말하여 'FROM'을 이미 지정 했으므로 행을 필터링 할 필요가 없을 때 어디에도 WHERE가 필요하지 않습니다.

편집 : 죄송합니다. 별명을 입력하지 않았습니다. 마지막 부분 (그리고 선택 영역의 필드)에는 대상으로 지정할 테이블이 있습니다. 동일한 열 이름을 가진 쿼리에 두 개의 테이블이 있으면 target_id가 그다지 의미하지 않는다는 것을 기억하십시오. 그렇지 않으면 모호성 오류가 발생합니다. 난 당신이 WHERE 1 또는 두 번째 FROM을 왜 모르겠어요

+0

모호한 열이있는 경우 해당 열을 접두어로 추가해야합니다. – Lamak

+0

그래, 이미 완료 :) – Charleh

+0

네,이 기본 아이디어는 모든 필드가 접두사가 필요하므로 애매하지 않습니다 ... 빠른 응답을 주셔서 감사합니다. – Shawn