困惑于多个表上的多个连接的逻辑

时间:2012-06-22 12:08:32

标签: sql sql-server-2005 join

由于数据库的设置方式,我在从数据库中提取和计算数据方面遇到了一些问题。

每个案例都有多个客户和供应商,其中有一个主供应商。

我需要解决的主要问题如下:

  1. 能够在供应商与公司联系的几个月之间首先计算全部客户数量。

  2. 计算有多少客户进行了“初始联系”,因为有时数据库中没有初始联系人。

  3. 我试图通过在单个查询中使用多个连接来执行此操作,但这似乎不会返回完整的数据。

    我对使用多个连接感到困惑,我知道它们可以按任何顺序执行,但我不确定第二个连接是在运行的,也是我可以合法地在同一查询中加入不相关的表或者如果我需要做一个单独的查询来做到这一点。

    请在下面找到我的许多查询中的一个重新创建的图片:

    SELECT Count(cc.customercase)
    FROM   customer cc
           LEFT JOIN customer
                  ON cc.custid = c.custid
           LEFT JOIN maincase m
                  ON m.id = cc.caseid
           LEFT JOIN custcontactlog cl
                  ON cl.caseid = cc.custcaseid
           LEFT JOIN supcase sc
                  ON sc.caseid = m.id
    WHERE  cl.contactlogtype = 'Initial Contact'
           AND sc.primarysupplyer = 1
           AND Calctargetdate(sc.joindate) > cl.postdate
           AND cl.postdate > sc.joindate
           AND c.gender = 'M'
           AND sc.joindate BETWEEN CONVERT(DATETIME, '01/01/2012', 103) AND
                                   CONVERT(DATETIME, '31/03/2012', 103)  
    

    http://i50.tinypic.com/2qk3pqa.png

1 个答案:

答案 0 :(得分:0)

我建议你在尝试实现两件事时,应该有两个单独的查询来实现它。