MYSQL,创建一个视图并从两个表中提取信息
好的,我有两张桌子: hscust和hssales_代表 我需要创建一个视图,显示代表fname和lname(以及客户),并显示客户在那里的信用余额 这是我的代码:MYSQL,创建一个视图并从两个表中提取信息,mysql,view,Mysql,View,好的,我有两张桌子: hscust和hssales_代表 我需要创建一个视图,显示代表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 - bal
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
它返回一个空结果
非常感谢您的帮助
创建视图的
语句不返回结果集
SELECT
语句可以返回空的结果集。但是我们希望视图定义中的SELECT
语句返回单行或抛出错误
我建议你把它分解一下
1)通过CREATE VIEW
语句解决了什么问题。你为什么需要一个视野
2)在编写CREATE VIEW
语句之前,首先开发并测试返回所需结果集的SELECT
语句。在将其放入视图定义之前,请执行此操作
我还强烈建议您使用表名或(最好)短表别名限定SELECT语句中的所有列引用
如果要在选择列表中为每个Cust
返回一行,并使用聚合函数(例如SUM
),请在SELECT
语句中添加适当的GROUP BY
子句
我们不清楚为什么要使用SUM-aggregate函数
“信用额度”和“余额”之间的差额将是可用(剩余)信用。负值表示余额“超过”信贷限额
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
选择CONCAT(r.last,r.first)作为代表
,CONCAT(c.last,c.first)作为客户
,c.信用额度-c.可用信用余额
来自hscust c
加入销售代表
关于c.sales_rep=r.repid
其中c.信用额度-c.余额<0
命令
由CONCAT(r.last,r.first)
,CONCAT(c.last,c.first)
,c.custid
同样,在将其包装到CREATE VIEW
中之前,先获取一个SELECT
语句工作(返回所需的结果集)。您可以共享任何示例数据吗?我将我正在处理的表添加到您的语句似乎工作的问题中。您确实需要在create table
中提供示例数据,然后以insert-into
语句的方式(而不是图片格式)提供,这样我们就可以重现问题。不过,它给了我一个空集抱歉,我是这个网站的新手,所以我不知道如何以您想要的形式提供示例数据。首先,为表格编写脚本:创建表格blablabla(…)
。然后编写语句插入一些数据:插入blabla值(1,'yy,'xx',…)
。如果您愿意,您可以创建一个rextester演示(www.rextester.com)。哦,我明白了!我现在明白了,非常感谢!