0

我正在尝试使用 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
4

1 回答 1

0

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

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

您的查询看起来将客户直接链接到订单的商品,如果订单有多个商品,这可能是错误的。

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

我可能完全错了,您应该像其他人所说的那样提供一些示例数据

于 2013-06-30T04:16:06.003 回答