比较两个表的计数

时间:2014-01-19 06:34:13

标签: mysql sql

给出两张表......

tblEvents (fldEventID, fldAECap, fldDWCap, fldWSCap)
tblSignUps (fldSignUpID, fldEventID, fldPosition)

其中fldPosition中的值1与fldAECap相关,值2与fldDWCap相关,值3与fldWSCap相关;如果fldPosition值的计数等于每个相关的CAP值,我需要阻止任何新记录插入到tblSignUps中。例如,对于fldAECAP,我们可能只有3个分配位置,并且对于给定的EventID,该位置值在fldPosition中出现3次

基本逻辑将归结为......

INSERT INTO tblSignUps
VALUES(NULL,12,3)
WHERE fldWSCap > COUNT(fldPosition(3))

我该怎么做?

1 个答案:

答案 0 :(得分:1)

编写所需基本逻辑的方法是:

INSERT INTO tblSignUps
select NULL,12,3 from dual
where exists (
   select * from tblEvents where
     fldEventId = 12 and
     fldWSCap > (select count(*) from tblSignUps where fldEventId = 12 and fldPosition = 3)
  );

显然这只适用于字段fldWSCap。其他两个需要一个类似的陈述,其中fld * Cap根据fldPosition值改变。