Mysql 将表中列中的所有行返回到sql中的视图
有人能帮我回答这个问题吗 所以我有一个名为Orders的表,它有ordernumber、requireddate、shippeddate列。我需要找出shippeddate和requireddate之间的最长天数,并列出订单号 我创建了一个视图,我希望它包括ordernumber和datediff(requireddate,shippeddate)。这是我的代码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
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个订单号。我用类似的问题再次解决了这个问题