【问题标题】:Confused on the logic of multiple joins on multiple tables对多个表上的多个联接的逻辑感到困惑
【发布时间】:2012-06-24 17:34:59
【问题描述】:

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

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

我需要克服的主要问题如下:

  1. 能够首先计算供应商加入公司时所驱动的几个月之间的全部客户数量。

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

我试图通过在单个查询中使用多个连接来做到这一点,但这似乎并没有返回完整的数据。

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

请在下面找到我的许多查询之一的一个非常简化的图片:

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

【问题讨论】:

    标签: sql sql-server-2005 join


    【解决方案1】:

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

    【讨论】:

    • 嗨,我应该明确显示的查询应该反映第 2 部分,我目前正在为每个目标编写单独的查询。谢谢
    猜你喜欢
    • 2018-05-30
    • 2019-08-07
    • 1970-01-01
    • 2017-09-21
    • 2015-02-28
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多