2012-02-07 2 views
0

내 데이터베이스에는 교사가 TeacherPIN, Name and Pay를 가지고 있습니다. 내 데이터베이스에는 ClassPIN뿐만 아니라 TeacherPIN 및 여러 ClassPIN에 대한 참조가있는 TeacherPIN 및 Student가 포함 된 Class가 있습니다. 특정 교실에 25 명이 넘는 학생이있는 경우 특정 교사의 보수를 업데이트하고 싶지만 붙어 있습니다. 현재 내가하고있는 일 :여러 매개 변수를 기반으로 한 MySQL 업데이트

update Teacher 
set Pay = Pay + 1000 
where (TeacherPIN = c.TeacherPIN from Class c 
and c.ClassPIN = '1010') 
and (select count(s.ClassPIN) from Student s 
where s.ClassPIN = '1010') >= 25; 

나는 이것이 아마도 매우 틀렸고 올바른 방향으로 조금 움직이는 것을 알고있다.

+1

http://stackoverflow.com/questions/806882/update-multiple-tables-in-mysql-using-left-join을 살펴보고 여기에 모든 유형의 가입을 사용할 수 있음을 기억하십시오. 왼쪽 조인과 당신이 당신이 원하는 것에 조금 더 가까이해야합니다. –

+0

학생 표를 자세히 설명해 주시겠습니까? 포함 된 모든 입력란을 입력하고 교사용 테이블 –

답변

0

은 다음을 시도해 볼 수도 있습니다 :

UPDATE Teacher t 
SET Pay = Pay + 1000 
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN 
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN 
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25; 

JOIN의 클래스와 학생 정보를 가지고, 그리고 COUNT(IF(s.ClassPin='1010',1,NULL)) 카운트 '1010'에 얼마나 많은 s.ClassPins까지.

(그래도 난 처음 확인 것 :

SELECT * 
FROM Teacher t 
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN 
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN 
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25; 

)

이 클래스 당 하나의 교사가 가정 않습니다.

+0

에 대한 참조가있는 이유를 설명하십시오. 감사! – NSchulze

관련 문제