2016-12-20 1 views
0

sqlite 데이터베이스에 저장된 축구 게임 데이터 (피치 x, y, z 좌표)를 분석 중입니다. 각 플레이어는 볼을 자신의 sqlite가 테이블을 가지고, 그는 타임 스탬프를 통해 일치시킬 수많은 SQlite 테이블에 가입하거나 데이터 구조를 변경하십시오.

예 :

table player1: timestamp, x, y, z 
table player2: timestamp, x, y, z 
table ball: timestamp, x, y, z 

이 ... (18) * 2 플레이어까지 추가

의 (a있다 명단에있는 각 플레이어에 대한 테이블뿐만 아니라 공을위한 테이블) + 1 테이블 공 = 39 테이블

(1) 거대한 JOIN 체인으로 원하는 좌표를 얻는 것이 더 효과적일까요 아니면 모든 데이터를 가지는 데이터 구조 n "coords"테이블 하나?

(2) 분리 된 테이블과 JOINS를 유지할 수 있다면 수동으로 39 개 테이블 각각을 결합하는 것보다 더 쉽게 테이블을 선택할 수 있습니까?

이 내 쿼리에 대한 복잡한에 길을 보인다 : "플레이어가 근처에"당신이 궁금해 할 것 결국

SELECT 
    Ballcoords.x AS ballcoords_x, 
    Ballcoords.y AS ballcoords_y, 
    Ballcoords.z AS ballcoords_z, 
    Player1.x AS player1_x, 
    Player1.y AS player1_y, 
    Player1.z AS player1_z, 
    Player2.x AS player2_x, 
    Player2.y AS player2_y, 
    Player2.z AS player2_z, 
    (... up to Player 38) 
FROM 
Ballcoords 
LEFT JOIN Player1 ON Ballcoords.timestamp = Player1.timestamp 
LEFT JOIN Player2 ON Ballcoords.timestamp = Player2.timestamp 
(... up to Player 38) 
+1

각 플레이어마다 고유 한 테이블 (NOOOOOOO !!!)이 있습니다. –

+0

@ juergen d 그래서 내가 대신 모든 좌표를 포함하는 테이블 하나를 제안해야합니까? – ManuKaracho

답변

0

Join on cast(playerx/10 as integer) = cast(ballx/10 as integer) and 
cast(playery/10 as integer) = cast(bally/10 as integer) 

if ((integer) playerx/10 = (integer) ballx/10) { 
} 
관련 문제