2014-01-19 143 views
0

给定两个表比较计数...跨越两个表

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

其中的1 fldPosition一个值涉及fldAECap,值2涉及fldDWCap,值3涉及fldWSCap;如果fldPosition值的计数等于每个相关CAP值,我需要防止将任何新记录插入到tblSignUps中。例如,我们可能只有3位分配为fldAECAP和位置值出现3次fldPosition对于给定的事件ID

的基本逻辑将回落到...

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

我会怎么做这个?

回答

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值而变化。