-1

我在使用 Northwind DB 时遇到了这个子查询 SQL 练习的问题:

**16.
From order number 10251 show employee's name,company's name, order's  
date,name of each product,quantity,unit price and  
final price (= unitprice * quantity – unitprice*quantity*discount)
**

以下是我尝试的解决方案,每个子查询都可以正常工作,给出预期的结果,但是在同一个查询中组合在一起时会失败

select 
 (select FirstName from Employees where EmployeeID=Orders.EmployeeID)as 'Name',
 (select Customers.CompanyName from Customers where  Customers.CustomerID = Orders.CustomerID)'Company name' ,
 (select Products.ProductName,Products.UnitPrice,
         [Order Details].Quantity,
         (Products.UnitPrice*[Order Details].Quantity-Products.UnitPrice*[Order Details].Quantity*[Order Details].Discount) 
 AS 'Final Price' from Products 
 INNER JOIN [Order Details] on Products.ProductID= [Order Details].ProductID 
 WHERE [Order Details].OrderID=10251),
Orders.OrderDate
from Orders 
where OrderID=10251
4

1 回答 1

0

我相信您的查询失败了,因为第三个子查询(用于最终价格)返回的是关系,而不是标量值。

我以选择联接而不是子查询的形式重新编写了查询。子查询可能很有用,但我认为在这里使用连接会使查询更易于阅读和使用。

select firstName as Name, 
  C.companyName as CompanyName, 
  P.UnitPrice * OD.Quantity 
    - (P.UnitPrice * OD.Quantity * OD.Discount) 
  as FinalPrice
from Orders as O
  left join Employees as E
    on E.employeeId = O.employeeId
  left join Customers as C
    on C.customerId = O.customerId
  left join [Order Details] as OD
    on OD.orderId = O.orderId
  left join Products as P
    on P.productId = OD.produtId
于 2021-08-05T04:24:09.480 回答