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 
4

1 回答 1

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 在Having 子句之前

Group by Person.personID, Training.trainingID
于 2013-04-11T20:31:07.760 回答