2015-12-15 84 views
-1

CTE比自加入和子查询有什么优势? 我们可以通过使用CTE实现使用自连接/子查询。想知道除了简单的cte语法之外,使用cte来提升这些方法的好处!?CTE通过自加入和子查询

+0

一些具体的例子会有帮助。否则,这个问题非常广泛。 – sstan

+0

你是指CTE自我加入的是什么?请发表一个例子。我认为你的意思是派生表 - 而不是子查询 – Paparazzi

回答

1

CTE允许轻松创建导航父子结构的递归查询。

-1

当一个查询确实是复杂的(认为的5-6派生表的可能性,大约20连接和有条件的地方,你知道的7个或更多 - 在企业环境中的平均报告查询),那么热膨胀系数有助于更容易了解发生了什么,从而使查询更易于维护。当事情以复杂的方式一起工作时,它们也可以使得获得实际正确结果更加简单。

所以说,我需要的邻接一堆符合一定条件的订单的所有信息tecnnical的报告。由于信息将被汇总,因此最终结果应该与您刚查询订单表时得到的记录数相同。所以你从一个CTE开始就可以得到你想要的订单。你可以做一个简单的选择,并找到满足条件的37个订单。现在你知道你的最终结果应该是什么,并且随着你的查询越来越复杂,你可以很容易地检查你的问题。

所以现在我需要在每个订单中的个别项目的总和。也许是因为它们存储在多个表格中(比如说服务和货物在不同的表格中),那么你就有一个工会,你需要得到这笔钱。所以这成为第二个CTE。

现在,您需要为订单的接触点,但有些订单有关联的多个人,你必须要找到通过添加一些标准的主要联系人。所以现在你有第三个CTE。

那么你有两个送货地址,所以你需要或两者连接在一起还是应该每一批是一个单独的记录?此时,通过使用多个CTE来继续添加大块数据会更容易,并且当您进入最终查询时,它会相对简单,因为所有复杂性都在单个块中。

那就从现在开始,当有人需要改变商业规则来确定一个信息块一年的时间,你可以改变只是一个组成部分,有信心多了也没有影响到其他部分如何一起工作。维护起来容易得多。

当然什么@TabAllerman说一下递归。