【问题标题】:Comparing counts across two tables比较两个表的计数
【发布时间】:2014-01-19 16:59:46
【问题描述】:

给定两个表...

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))

我该怎么做?

【问题讨论】:

    标签: mysql sql


    【解决方案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 值发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多