- 查询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
- QUERY2
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通过交易导航到客户,其中每个客户都使用ProductID作为其列。第二个查询从Transactions到FinancialProducts,其中连接位于事务表中的RelatedProductID和FinancialProducts表中的productID
然后,两个查询都在同一个表中结束,并在该表中选择相同的列。
最后,FinancialProductID在第一个查询中为22,在第二个查询中,所有11行的financialProductID为22
实际问题:哪一种是导航到桌面的正确形式
答案 0 :(得分:1)
您提出的问题是关于数据含义的业务问题。
看起来两个版本的查询都正确地将表连接在一起。您了解您的业务领域,而我们其他人则不了解。
那就是说,根据表格的名称,第一个版本对我来说“有意义”。交易有客户,客户有产品。因此,如果您想在交易中为客户提供所有产品,那么第一个似乎就是这样做。
我不知道FinancialProducts在这个数据库中扮演什么角色。第二个版本很可能对这个应用程序“更有意义”。如果您正在使用此数据库,您应该了解这些表是什么。