我的问题:-
写一个SELECT语句,返回他们在销售中购买的客户和产品的列表(折扣)。结果集必须包括LastName、FirstName、OrderDate、ProductName、ItemPrice、DiscountAmount和表的数量使用别名。通过LastName、OrderDate和ProductName对最终结果集进行排序。
我的ERD:-ERD
我的答案是:-
选择LastName,FirstName,OrderDate,ProductName,ItemPrice,DiscountAmount,Quantity
FROM Customers, Orders, OrderItems, Products
WHERE
Customers.CustomerID = Orders.CustomerID
AND
Orders.OrderID = OrderItems. OrderID
AND
OrderItems.ProductID = Products.ProductID
AND DiscountAmount > 0
ORDER BY LastName, OrderDate, ProductName它运行得很完美,well..but,我只是想知道是否有更好的方法来做它?有什么建议吗?
发布于 2015-10-24 00:08:41
一个可能的改进是使用显式联接,而不是1992年被废弃的隐式联接语法,还可以使用表别名来提高查询的可读性:
SELECT
c.LastName,
c.FirstName,
o.OrderDate,
p.ProductName,
oi.ItemPrice,
oi.DiscountAmount,
oi.Quantity
FROM
Customers c
INNER JOIN
Orders o ON c.CustomerID = o.CustomerID
INNER JOIN
OrderItems oi ON o.OrderID = oi.OrderID
INNER JOIN
Products p ON oi.ProductID = p.ProductID
WHERE
oi.DiscountAmount > 0
ORDER BY
c.LastName,
o.OrderDate,
p.ProductName;请注意,这些更改不会影响查询的性能或结果。
它可能是,你也应该使用聚合函数,并总结折扣金额和/或计数的数量-问题不是那么清楚。
https://stackoverflow.com/questions/33313088
复制相似问题