繁体   English   中英

选择语句结合两个不同的列

[英]Select statement combining two different columns

我的问题:-

编写SELECT语句,以返回销售中的客户和产品列表(折扣)。 您的结果集必须包括LastName,FirstName,OrderDate,ProductName,ItemPrice,DiscountAmount和Quantity使用表的别名。 按LastName,OrderDate和ProductName对最终结果集进行排序。

我的ERD: -ERD

我的答案:-

SELECT姓氏,名字,OrderDate,产品名称,ItemPrice,DiscountAmount,数量

    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

它运行的很好。.但是我只是想知道是否有更好的方法? 有什么建议么!!?

一种可能的改进是使用显式联接代替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;

请注意,这些更改不会影响查询的性能或结果。

可能是您也应该使用聚合函数并汇总折扣金额和/或数量(折算数量)-问题还不清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM