Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL,创建一个视图并从两个表中提取信息_Mysql_View - Fatal编程技术网

MYSQL,创建一个视图并从两个表中提取信息

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

好的,我有两张桌子:

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 - 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)。哦,我明白了!我现在明白了,非常感谢!