2013-04-11 199 views
0

我有三個表。 我需要將接近最大數量的人員插入人員培訓表。人員培訓表具有所需的最大人數。插入最大行數到另一個表查詢

所以,比如我有30人,並在需要的量是像27,27人應該插入

同樣,如果需要的人的數量是像15和15已經分配,​​我不的人的訓練表不需要插入任何東西。

可以這樣來完成

Person 
Pk personId 
firstName 
lastName 

Person_Training 
PK FK personId 
PK FK trainingId 
signed 

Training 
T trainingId 
Location 
personsNeeded 
date 

我都試過,但無濟於事

INSERT INTO Person_Training(personId,trainingId) 
SELECT personId , trainingId 
    FROM Person , Training 
WHERE Training.date = '9-10-2013' 
Having COUNT(Person.personId) < Training.personsNeeded 
+0

Person.personsNeeded是不正確的。 PersonNeeded列在Training表中。應該Training.personsNeeded – 2013-04-11 20:24:58

+0

是的,它是一個錯字,但它仍然無法正常工作 – Marc 2013-04-11 20:26:21

+0

[不使用'HAVING'的項目應該是在'WHERE'條款。(HTTPS://dev.mysql。 com/doc/refman/5.5/en/select.html) – peterm 2013-04-11 20:34:57

回答

0

它看起來像你缺的是所有表的連接。

from Person 
inner join person_Training on person_Training.personID = Person.PersonID 
inner join Training on Training.trainingID = Person_Training.trainingID 

不要忘記所有選定字段上的group by子句。該組通過前有條款

Group by Person.personID, Training.trainingID 
相關問題