2012-12-12 1 views
1

로컬 데이터베이스에있는 테이블 세트에 특정 쿼리를 작성하는 방법을 찾는 데 어려움이 있습니다.지구당 인력이 적은 SQL gym

CREATE TABLE Gym (
eid INT PRIMARY KEY, 
name VARCHAR(127) UNIQUE, 
district VARCHAR(127), 
area INT); 

CREATE TABLE Trainer (
id INT PRIMARY KEY, 
name VARCHAR(127), 
birth_year INT, 
year_credentials_expiry INT 
); 

CREATE TABLE Works (
eid INT, 
id INT, 
since INT, 
FOREIGN KEY (eid) REFERENCES Gym (eid), 
FOREIGN KEY (id) REFERENCES Trainer (id), 
PRIMARY KEY (eid,id)); 

문제는 다음이다 : 나는 몇 체육관이 있고 두 개 이상의 체육관이 같은 지역에있는 경우가있다. 교육구가 적은 체육관은 지구별로 어떻게 알 수 있습니까? 내가 얻을 수 있었던 유일한 것은 체육관 당 트레이너 수입니다. ... 난 단지 모든 지구에서 최소 트레이너와 함께 체육관을 얻을 수 있다는

주를 고려 : 내가 서브 쿼리를 사용할 수 없습니다입니다;

가 사전에 감사합니다 (SELECT의 내부 SELECT의 FROM 내부 SELECT).

+0

group_by를 살펴보고 아마도 order_by와 limit도 참조하십시오. – Colleen

+0

하위 쿼리를 사용할 수없는 이유는 무엇입니까? 이 부분이 숙제 임무입니까? –

+0

@GordonLinoff 네, 다른 모든 문제를 해결할 수있었습니다. 그러나 이것이 마지막이기 때문에 조금 더 chalenging하고 실제로 도움을받을 수 있습니다. –

답변

0

where 또는 having clauseclause에 하위 쿼리를 포함 할 수있는 경우이 방법으로 접근 할 수 있습니다.

지구별 강사 수를 세는 조회를 먼저보십시오.

이제 지구의 체육관에서 트레이너의 최소 수를 계산하는 쿼리 (하위 쿼리로 사용)를 작성하십시오.

다음으로 첫 번째 쿼리에서 having 절을 추가하고 두 번째 튜닝 할 곳과 연계시킬 수 있습니다.

하위 쿼리에서 하위 쿼리를 사용하지만이 하위 쿼리는 having 절에 있습니다. 나는 당신이 당신 자신을 어떻게하는지 배우는 것이 필요하기 때문에, 당신을 위해 질문을 쓰지 않을 것입니다.

그런데 창/분석 함수가있는 경우 다른 솔루션이있을 수 있습니다.