2017-12-20 1 views
0

나는 2002 년에 500,000 $ 이상의 급여를 받고, 30 홈런보다 을 더 많이 만든 플레이어를 인쇄하려고합니다. 두 테이블에서 데이터를 가져와야하지만 내가 가지고있는 것은 작동하지 않고 오류가 발생합니다. 나는 실수를 알아낼 것 같지 않은데, 왜 내가 필요한 결과를 내고 있지는 않는지. 오류 메신저가 점점SQL Query가 올바른 응답을 제공하지 않는 이유를 Cant가 이해하는 것 같습니다.

SELECT batter.playerID, HR, salary_table.salary, salary_table.yearID 

FROM batter, salary_table 

JOIN salary_table ON salary_table.playerID = batter.playerID 
JOIN salary_table ON salary_table.yearID = batter.yearID 

WHERE salary_table.yearID = 2002 
AND salary_table.salary > 500000 
AND HR > 30 
GROUP BY batter.playerID, HR, salary_table.salary, salary_table.yearID; 

는 AILED =입니다 : SemanticException [오류 10008] : 행 5 : 5 모호한 테이블 별칭 'salary_table'

+1

당신은'salary_table'과 함께 여러 개의 조인이 있습니다. 모호성을 제거하기 위해 다른 별칭을 줄 필요가 있습니다. 또한 명시 적'JOIN'과 교차 제품을 섞어서는 안됩니다. – Barmar

+0

@Barmar 그래서 batter.playerID 뒤에 쉼표를 넣고 salary_table.yearID까지 제거하면이 문제가 해결됩니까? 이 작업을 수행하면 ParseException 오류 줄 5:82이 '=' 'batter' '근처의 입력을 인식 할 수 없습니다.' 테이블 소스 –

답변

0

당신은 salary_table 여러 번에 가입 할 필요가 없습니다. 당신이 테이블에 아무것도를 집계하지 않는 때문에

SELECT b.playerID, b.hr, s.salary, s.yearID 
FROM batter AS b 
JOIN salary_table AS s ON b.playerID = s.playerID AND b.yearID = s.yearID 
WHERE s.yearID = 2002 
AND s.salary > 500000 
AND b.hr > 30 

또한, GROUP BY 필요하지 않습니다.

+0

오 신이 바보 같은, 나는 이것이 Msc 컴퓨터 과학 학생 인 것을 알아야합니다 .- 당신은 최고의 사람 <3 –

관련 문제