需要创建一个视图,在from子句中没有子查询的情况下获得相同的结果

时间:2015-07-08 04:28:45

标签: mysql

此查询提供了我想要的数据

SELECT Sales Number, Percentage Complete, Date, Scheduled Completion
FROM (SELECT `Sales Number`, `Date`, `Percentage Complete`, `Scheduled Completion` 
      FROM Details 
      ORDER BY `Date` DESC) AS A
GROUP BY `Sales Number`

我使用的代码生成器并不允许我将其连接到另一个视图(我需要这样做。)如果我可以保存一个可以给我相同结果的视图,我很高兴。

我已经尝试将子查询分解为两个单独的视图,但结果并不相同。 (我只需要每个Sales Number的最新条目。)

我错过了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

好的,我自己解决了! 我的第二个工作查询可以分解为两个VIEWS ..

我首先从此查询中创建了一个名为test的VIEW:

Select `Sales Number`,max(`Date`) as `Date`
From `Details`
Group By `Sales Number`

然后我从此查询中创建了另一个名为latest的视图:

Select q.`Date`,
d.`Sales Number`,
d.`Percentage Complete`,
d.`Scheduled Completion`
From `Details` As `d`
Inner Join `test` As `q`
On d.`Sales Number` = q.`Sales Number`
And d.`Date` = q.`Date`

我现在能够将它连接到我的代码生成器中的另一个表,并产生所需的结果。它可能不是最有效的方法,所以任何改进都是值得赞赏的。

答案 1 :(得分:0)

经过更多的搜索和试用之后错误(主要是错误)我发现这个查询也给了我想要的结果,但是再一次,它不能保存为VIEW,因为它在FROM子句中有一个SELECT。

   Select q.`Date`,
   d.`Sales Number`,
   d.`Percentage Complete`,
   d.`Scheduled Completion`
   From `Details` As `d`
   Inner Join (
   Select `Sales Number`,max(`Date`) as `Date`
   From `Details`
   Group By `Sales Number`) As `q`
   On d.`Sales Number` = q.`Sales Number`
   And d.`Date` = q.`Date`

有谁能请我摆脱我的痛苦?