【发布时间】:2016-06-13 19:21:28
【问题描述】:
我对 SQL 很陌生,这给我带来了麻烦。这个想法是我有几张桌子。以下是相关的表格和列:
customers:
customer_id, customer_name
orders:
order_id, customer_id
orderline:
order_id, item_id, order_qty
items:
item_id, unit_price
我需要返回 customer_name 以及该客户的总收入(计算为 item_price * order_qty * 2)。
这是我写的:
SELECT customers.customer_name, sum(revenue)
FROM SELECT orderline.order_qty * items.unit_value * 2 AS revenue
FROM orderline
INNER JOIN orders
ON orderline.order_id = orders.order_id
INNER JOIN customers
ON revenue.customer_id = customers.customer_id;
这会引发语法错误,我不确定如何继续。
这只是我需要解决的此类问题的一个示例,因此更通用的答案会有所帮助。
提前致谢!
编辑:
在答案的帮助下,我最终得到了这段代码,它只获得了总收入,并将其放在数据库名称中的第一个人旁边。我在这里做错了什么?
SELECT customers.customer_name, sum(revenue)
FROM(SELECT orderline.order_qty * items.unit_price * 2 AS revenue, orders.customer_id AS CustomerID
FROM( orderline
INNER JOIN orders
ON orderline.order_id = orders.order_id
INNER JOIN items
ON orderline.item_id = items.item_id)) CustomerOrders
INNER JOIN customers
ON CustomerOrders.CustomerID = customers.customer_id;
【问题讨论】:
-
这是 mysql 还是 sql-server?没关系,因为这些东西到处都是相当标准的。但是不要用阳光下的每个数据库来标记您的问题 - 只是您实际使用的数据库。错误信息具体是什么?
-
您需要
group by。我也在删除无关的数据库标签。 -
我猜是子查询缺少别名。 subqeries 需要一个别名,即使它从未真正使用过。
select * from (select ...) as subselect -
'错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“SELECT orderline.order_qty * items.unit_value FROM orderline INNER JOIN”附近使用正确的语法