2014-01-19 188 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值而變化。