我尝试使用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
答案 0 :(得分:0)
我不知道你的牌桌,但第一张牌的WHERE
TC.intCustomerID = TCOI.intCustomerID
看起来很奇怪,我想它应该是WHERE
TC.intCustomerID = TCO.intCustomerID
?
如果TCustomers(TC)包含您的所有客户和TCustomerOrders(TCO)您的订单,我猜订单是否与客户相关联?
您的查询会将客户直接链接到订单商品,如果订单包含多个商品,则可能会出错。
顺便说一句,为什么客户ID存储在TCustomerOrderItems表中?
我可能完全错了,你应该提供一些样本数据,正如其他人所说的那样