MYSQL,创建一个视图,并从两个表
好拉的信息,所以我有两个表:MYSQL,创建一个视图,并从两个表
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
并返回一个空的结果。
任何帮助,非常感谢!
一个CREATE VIEW
语句不返回一个结果。
A SELECT
语句可以返回一个空的结果集。但是我们希望视图定义中的SELECT
语句返回一行,或者抛出一个错误。
我建议你稍微分解一下。
1)CREATE VIEW
声明正在解决什么问题。你为什么需要一个观点?
2)在编写CREATE VIEW
声明之前,首先开发并测试返回所需结果集的语句SELECT
。在之前做你把它放到视图定义中。
我也强烈建议您在SELECT语句中限定全部列引用,或者使用表名或(最好)短表别名。
如果你想返回每个Cust
一排在你的SELECT列表中的聚合函数(例如SUM
),再加入适当的GROUP BY
条款您SELECT
声明。
目前尚不清楚为什么我们想要使用SUM聚合函数。
“credit_limit”和“balance”之间的差异是可用(剩余)信用。负值表示余额超过了信用额度。
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
如果我们只想为超出信用额度的客户返回行,我们可以添加一个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
之前。
哦,我明白了!我现在明白了,非常感谢! –
您可以共享任何示例数据? –
我添加了我正在处理的问题 –
您的声明似乎工作。你确实需要在** create table **中提供样本数据,然后是**'insert into'**陈述方式,而不是图片格式),以便我们可以**重现**问题。 –