0

--查询1

SELECT TransactionDetails.Transactions.TransactionId
,     TransactionDetails.Transactions.CustomerId
,     TransactionDetails.Transactions.TransactionType
,     TransactionDetails.Transactions.DateEntered
,     TransactionDetails.Transactions.RelatedProductId
,     CustomerDetails.CustomerProducts.CustomerFinancialProductId
,     CustomerDetails.CustomerProducts.CustomerId AS 'CustomerProducts--CustomerID'
,     CustomerDetails.CustomerProducts.FinancialProductId
,     CustomerDetails.CustomerProducts.AmountToCollect
FROM TransactionDetails.Transactions 
    INNER JOIN CustomerDetails.Customers ON TransactionDetails.Transactions.CustomerId =       CustomerDetails.Customers.CustomerID 
    INNER JOIN CustomerDetails.CustomerProducts ON CustomerDetails.Customers.CustomerID =     CustomerDetails.CustomerProducts.CustomerId
WHERE TransactionId = 2
ORDER BY CustomerFinancialProductId

--查询2

SELECT TransactionDetails.Transactions.TransactionId
    , TransactionDetails.Transactions.CustomerId
    , TransactionDetails.Transactions.TransactionType
    , TransactionDetails.Transactions.DateEntered
    , TransactionDetails.Transactions.RelatedProductId
    , CustomerDetails.CustomerProducts.CustomerFinancialProductId
    , CustomerDetails.CustomerProducts.CustomerId AS 'CustomerProducts--CustomerID'
    , CustomerDetails.CustomerProducts.FinancialProductId
    , CustomerDetails.CustomerProducts.AmountToCollect
FROM TransactionDetails.Transactions 
    INNER JOIN CustomerDetails.FinancialProducts ON     TransactionDetails.Transactions.RelatedProductId = CustomerDetails.FinancialProducts.ProductId 
    INNER JOIN CustomerDetails.CustomerProducts ON     CustomerDetails.FinancialProducts.ProductId = CustomerDetails.CustomerProducts.FinancialProductId
WHERE TransactionId = 2
ORDER BY CustomerFinancialProductId

这里有两个查询,我已经给出了比较。它询问哪一个导航得更好,应该是正确使用的那个?

我知道第一个查询只返回 1 行,而第二个查询返回 11 行。查询 1 还通过 Transactions 导航到 Customer,它使用 ProductID 作为每个列中的列。第二个查询从 Transactions 转到 FinancialProducts,其中连接位于 transactions 表中的 RelatedProductID 和 FinancialProducts 表中的 productID

然后,两个查询都以同一个表结束,并在该表中选择了相同的列。

最后,FinancialProductID 在第一个查询中为 22,在第二个查询中,所有 11 行的金融产品 ID 为 22

实际问题:哪一种是导航到表格的正确形式

4

1 回答 1

1

您提出的问题是关于数据含义的业务问题。

看起来两个版本的查询都正确地将表连接在一起。您了解您的业务领域,而我们其他人则不了解。

也就是说,根据表的名称,第一个版本对我来说“有意义”。交易有客户,客户有产品。因此,如果您想在交易中为客户提供所有产品,那么第一个似乎会这样做。

我不知道 FinancialProducts 在这个数据库中扮演什么角色。第二个版本很可能对这个应用程序“更有意义”。如果你使用这个数据库,你应该了解这些表是什么。

于 2013-04-21T22:21:26.363 回答