旧的连接语法多个表

时间:2013-06-29 16:51:30

标签: sql-server

我尝试使用sql server 2008中的旧内部联接语法将四个表连接在一起并且无法弄清楚,我不断获得笛卡尔积。我尝试了多种不同的方法,但仍然会重复结果。 我的错误在哪里?

代码:

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

1 个答案:

答案 0 :(得分:0)

我不知道你的牌桌,但第一张牌的WHERE TC.intCustomerID = TCOI.intCustomerID看起来很奇怪,我想它应该是WHERE TC.intCustomerID = TCO.intCustomerID

如果TCustomers(TC)包含您的所有客户和TCustomerOrders(TCO)您的订单,我猜订单是否与客户相关联?

您的查询会将客户直接链接到订单商品,如果订单包含多个商品,则可能会出错。

顺便说一句,为什么客户ID存储在TCustomerOrderItems表中?

我可能完全错了,你应该提供一些样本数据,正如其他人所说的那样