gpt4 book ai didi

mysql - 组合两个不同列的 Select 语句

转载 作者:行者123 更新时间:2023-11-29 21:54:23 24 4
gpt4 key购买 nike

我的问题:-

编写一条 SELECT 语句,返回客户及其促销(折扣)购买的产品列表。结果集必须包含 LastName、FirstName、OrderDate、ProductName、ItemPrice、DiscountAmount 和 Quantity对表使用别名。按 LastName、OrderDate 和 ProductName 对最终结果集进行排序。

我的 ERD:- ERD

我的回答:-

选择姓氏、名字、订单日期、产品名称、 商品价格、折扣金额、数量

    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;

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

您可能也应该使用聚合函数并总结折扣金额和/或计算数量 - 问题不太清楚。

关于mysql - 组合两个不同列的 Select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33313088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com