好的,我有两张桌子:
hscust和hssales_rep
我需要创建一个视图,向我显示代表fname和lname(以及客户),并显示客户在信用余额上的结果。
这是我的代码:
CREATE VIEW OverLimit AS
SELECT
CONCAT(hssales_rep.last,hssales_rep.first) AS Rep,
CONCAT(hscust.last,hscust.first) AS Cust,
SUM(credit_limit - balance)
FROM hscust
INNER JOIN hssales_rep ON hscust.sales_rep = hssales_rep.repid
它返回一个空结果。
非常感谢任何帮助!
答案 0 :(得分:0)
CREATE VIEW
语句不会返回结果集。
SELECT
语句可以返回空结果集。但是我们希望视图定义中的SELECT
语句返回单行,或者抛出错误。
我建议你稍微打破一下。
1) CREATE VIEW
语句正在解决什么问题。你为什么需要一个观点?
2)在编写CREATE VIEW
语句之前,首先开发并测试返回所需结果集的SELECT
语句。在之前将它放入视图定义中。
我还强烈建议您使用表名或(最好)短表别名来限定SELECT语句中所有列引用。
如果要在SELECT列表中使用聚合函数(例如Cust
)为每个SUM
返回一行,请在GROUP BY
中添加适当的SELECT
子句声明。
我们不清楚为什么要使用SUM聚合函数。
" credit_limit"之间的区别和"平衡"将是可用的(剩余)信用额度。负值表示余额为"超过"信用额度。
SELECT CONCAT(r.last,r.first) AS Rep
, CONCAT(c.last,c.first) AS Cust
, c.credit_limit - c.balance AS available_credit
FROM hscust c
JOIN hssales_rep r
ON c.sales_rep=r.repid
ORDER
BY CONCAT(r.last,r.first)
, CONCAT(c.last,c.first)
, c.custid
如果我们只想为那些" over"他们的信用额度,我们可以添加一个WHERE子句。
SELECT CONCAT(r.last,r.first) AS Rep
, CONCAT(c.last,c.first) AS Cust
, c.credit_limit - c.balance AS available_credit
FROM hscust c
JOIN hssales_rep r
ON c.sales_rep=r.repid
WHERE c.credit_limit - c.balance < 0
ORDER
BY CONCAT(r.last,r.first)
, CONCAT(c.last,c.first)
, c.custid
再次,在中将SELECT
语句包装在CREATE VIEW
之前,获取Book
语句(返回所需的结果集)。