【发布时间】:2019-02-18 21:06:06
【问题描述】:
create table customers
(
custID int(11) primary key,
customerName varchar(50),
phone varchar(50),
address varchar(50),
state varchar(50),
postalCode varchar(15),
country varchar(50),
creditLimit Decimal(10,2)
);
create table product
(
productID varchar(15) primary key,
productName varchar(70),
productVendor varchar(50),
productDescription text,
qtyInStock smallint(6),
price Decimal(10,2)
);
create table orders
(
orderNumber int(11) primary key,
orderDate date,
requiredDate date,
shippedDate date,
status varchar(15),
comments text,
custID int(11),
salesID int(11),
foreign key(custID) references customers(custID),
foreign key(salesID) references salespersonnel(employeeID)
);
这里有三张表,我想获取一位特定客户的所有订单以及他们花费的总金额。
我在订单表和付款表中有两个条目
我正在执行这个查询
select count(p.orderNumber) as 'Total Orders', sum(amount) as 'Amount Spent'
from orders p,
payments q
where p.custid = q.custid
and q.custid = 1;
此查询正在生成双重结果 这意味着总共必须返回 2200 作为花费的总金额,但我得到 4400 客户总共下了 2 个订单,但我得到了 4 个。请帮助
【问题讨论】:
-
我认为一个简单的
GROUP BY应该可以帮助你 -
今日提示:切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。 -
如何在这个表上使用join,你能帮我解决一下吗