Sql server 多个表的旧联接语法
我试图使用SQLServer2008中旧的内部联接语法将四个表联接在一起,但我弄不明白,我一直得到一个笛卡尔积。我尝试了多种不同的方法,但仍然得到重复的结果。 我的错误在哪里 代码:Sql server 多个表的旧联接语法,sql-server,Sql Server,我试图使用SQLServer2008中旧的内部联接语法将四个表联接在一起,但我弄不明白,我一直得到一个笛卡尔积。我尝试了多种不同的方法,但仍然得到重复的结果。 我的错误在哪里 代码: 我不知道你们的桌子,但读在哪里看起来很奇怪 TC.intCustomerID=TCOI.intCustomerID对于第一个表,我想应该是WHERE TC.intCustomerID=TCO.intCustomerID 如果TCustomers(TC)包含您的所有客户,TCustomerOrders(TCO)包含您
我不知道你们的桌子,但读
在哪里看起来很奇怪
TC.intCustomerID=TCOI.intCustomerID
对于第一个表,我想应该是WHERE
TC.intCustomerID=TCO.intCustomerID
如果TCustomers(TC)包含您的所有客户,TCustomerOrders(TCO)包含您的订单,我猜该订单是链接到客户的
您的查询看起来是将客户直接链接到订单的项目,如果订单有多个项目,这可能是错误的
顺便问一下,为什么客户ID存储在TCCustomerOrderItems表中
我可能完全错了,您应该像其他人所说的那样提供一些示例数据,不过我们可以得到这4个表的模式吗?也许还有一些示例数据
SELECT
TC.intCustomerID
,TC.strFirstName + ',' + TC.strLastName AS strCustomer
,TCO.intOrderIndex
,TCO.dtmOrder
,TI.intItemID
,TI.strItem
,TCOI.intQuantity
FROM
TCustomers AS TC
,TCustomerOrders AS TCO
,TCustomerOrderItems AS TCOI
,TItems AS TI
WHERE
TC.intCustomerID = TCOI.intCustomerID
AND TCO.intOrderIndex = TCOI.intOrderIndex
AND TCOI.intItemID = TI.intItemID
ORDER BY
TC.intCustomerID
,strCustomer