Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 将表中列中的所有行返回到sql中的视图_Mysql_Sql - Fatal编程技术网

Mysql 将表中列中的所有行返回到sql中的视图

Mysql 将表中列中的所有行返回到sql中的视图,mysql,sql,Mysql,Sql,有人能帮我回答这个问题吗 所以我有一个名为Orders的表,它有ordernumber、requireddate、shippeddate列。我需要找出shippeddate和requireddate之间的最长天数,并列出订单号 我创建了一个视图,我希望它包括ordernumber和datediff(requireddate,shippeddate)。这是我的代码 create view Numberdays (ordernumber, number_of_days) as select orde

有人能帮我回答这个问题吗 所以我有一个名为Orders的表,它有ordernumber、requireddate、shippeddate列。我需要找出shippeddate和requireddate之间的最长天数,并列出订单号

我创建了一个视图,我希望它包括ordernumber和datediff(requireddate,shippeddate)。这是我的代码

create view Numberdays (ordernumber, number_of_days)
as select ordernumber, datediff(requireddate, shippeddate) 
from CM_orders
group by ordernumber
但是我的视图只显示了表中的30行,尽管Orders表中有大约300行。 有人能解释一下我错了什么,以及如何进行显示表中所有行的视图吗?
提前谢谢。

您已按订单号分组。我猜您只有30个订单号,因此只返回了30行

我建议把你的问题分解并重新构建。如果您简化它,您可能会发现返回了更多的行,从而消除了限制器的可能性。然后沿着这条路径,慢慢地向查询中添加片段,以缩小返回数据的范围,直到得到想要的结果,或者确定限制因素


当意外数据返回时,诊断问题需要反复试验,如果没有数据集进行测试,我们几乎不可能识别问题。因此,我能给你的最好建议是,把它收回去,简单一点,然后增加复杂性,直到你发现问题。

希望我能正确理解你的问题

我试图创造类似的情况。检查下面的SQLFIDLE链接。 已从“创建视图”查询中删除“分组依据”

create view Numberdays (ordernumber, number_of_days)
as select ordernumber, datediff(requireddate, shippeddate) 
from Orders; -- i think no need to group by if there is not any aggregate function
获取完整的订单号


您需要做的是首先找到所需的最大日期和最小发货日期,然后执行日期差异

CREATE VIEW Numberdays (ordernumber, number_of_days)
AS SELECT ordernumber, datediff(rdate,sdate)
FROM(
  SELECT ordernumber, max(requiredate) AS rdate,min(shippeddate) AS sdate
  FROM CM_orders
  GROUP by ordernumber
)

请确认您的订单号在订单表中是唯一的是,订单号是唯一的。它们的编号从10100到10425。谢谢你,格雷格。但是我的订单表有大约300个订单号。我用类似的问题再次解决了这个问题