sql – 稀疏的INNER JOIN语法和封装
发布时间:2021-01-26 13:41:42 所属栏目:编程 来源:网络整理
导读:我凡是很是能干JOINS,但这是新的. 假设有三个表(两个表的经典案例和第三个,链接器表): Customer Product Transaction-------- ------- -----------ID ID CustomerIDName Desc ProductID Cost Date (简朴的存心,我不能重现现实的布局,这不是我的代码.) 凡是情
我凡是很是能干JOINS,但这是新的. 假设有三个表(两个表的经典案例和第三个,链接器表): Customer Product Transaction -------- ------- ----------- ID ID CustomerID Name Desc ProductID Cost Date (简朴的存心,我不能重现现实的布局,这不是我的代码.) 凡是环境下,为了获得“谁买什么时辰”的表格,我会这样做: SELECT Customer.Name,Product.Desc,Transaction.Date FROM Product INNER JOIN Transaction ON Transaction.ProductID = Product.ID INNER JOIN Customer ON Transaction.CustomerID = Customer.ID 但我获得了这个: SELECT Customer.Name,Transaction.Date FROM Product INNER JOIN ( Transaction INNER JOIN Customer ON Transaction.CustomerID = Customer.ID) ON Transaction.ProductID = Product.ID 这是什么?只是另一种语法或机能能力? (这是在SQLServer,FYI,但也许是可以应用于其他人……) 办理要领括号不会改变语义. ON子句的位置节制毗连的逻辑处理赏罚次序.第一次查询 SELECT Customer.Name,Transaction.Date FROM Product INNER JOIN Transaction ON Transaction.ProductID = Product.ID INNER JOIN Customer ON Transaction.CustomerID = Customer.ID 第二个查询 (删除了冗余括号) SELECT Customer.Name,Transaction.Date FROM Product INNER JOIN Transaction INNER JOIN Customer ON Transaction.CustomerID = Customer.ID ON Transaction.ProductID = Product.ID 以是逻辑上在你的第一个例子中,事宜上的毗连,产物起首产生,然后由此发生的假造表毗连到客户,而在第二个示例中,客户起首产生,然后由此发生的假造表毗连到产物 这只是逻辑上的,由于内部联接既是关联的又是可互换的,这也许不会对执行打算发生任何影响(除非您向查询添加OPTION(FORCE ORDER)),但它可以用于外部联接. 这是covered by Itzik Ben Gan here,但文章有很多禁绝确之处,请参阅follow up letter by Lubor Kollar. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |