[订单明细]和[客户]都是不相关的表格。通常情况下,我认为我无法从两个查询中进行查询,因为行数可能不匹配。
但是,在这种情况下,因为SUM(od.quantity * od.Unitprice)和COUNT(不同的c.CustomerID)都是单个整数,为什么我不能执行我的查询,如下所示?
SELECT SUM(od.quantity * od.Unitprice) / COUNT(distinct c.CustomerID)
FROM[Order Details] od, Customers c
示例数据:
注意:我正在使用microsoft sql server上的Northwind示例数据库
答案 0 :(得分:1)
由于使用单个FROM子句和旧式连接格式化查询的方式,您正在执行CROSSJOIN,它获取连接到两个表中每一行的每一行的笛卡尔积。
要获得您正在寻找的单行,您需要使用两个子查询:
SELECT (SELECT SUM(od.quantity * od.Unitprice) FROM [Order Details] od)/(SELECT COUNT(distinct c.CustomerID) FROM Customers c)