从视图获取最大修订版本号无法正常工作?

问题描述 投票:0回答:1

使用MySQL 5.6。我有一个视图,该视图从一个名为listquotes的主表中获取,而从其他表中获取其他一些项目。表中也在视图中的导入列为Quote #Revision。我们可能对相同的引用号进行5个不同的修订,因此我们的表格看起来像

id   ....   Quote#     Revision
================================
1           1234       1
2           1234       2
3           1234       3
4           1234       4
5           1234       5

现在,在我的应用程序GUI上,我们有一个下拉列表,应允许您仅查看每个引用的最新修订。这是我尝试执行的操作]

SELECT
...columns...
FROM view_allQuoteInfo
LEFT JOIN listcustomers c ON c.id = view_allQuoteInfo.customerId
WHERE 1=1  AND view_allquoteinfo.customerId = 2453  AND view_allquoteinfo.quoteStatusId = 2 AND view_allquoteinfo.Revision = (SELECT max(t.Revision) FROM view_allquoteinfo t WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)
ORDER BY idx DESC

但是,这没有给我想要的结果。这是针对我在excel中做过的特定客户的分析,有些报价只有一个修订版没有显示,例如6668,而其他报价,例如带有两个修订版的4730,则正常工作]

enter image description here

Excel中所有表的where子句是

    1=1 
AND view_allquoteinfo.customerId = 2453  
AND view_allquoteinfo.quoteStatusId = 2

并且“最新表”的子句是>

    1=1  
AND view_allquoteinfo.customerId = 2453  
AND view_allquoteinfo.quoteStatusId = 2 
AND view_allquoteinfo.Revision = 
       (SELECT max(t.Revision) 
          FROM view_allquoteinfo t 
         WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)

唯一的区别是我试图获得最新版本。该逻辑对我来说似乎是正确的,但显然MySQL并未按照我认为的方式对其进行解释。

关于它为什么不起作用或我将如何解决的任何线索?

我希望在我的“最新”表中看到报价6668修订版1和报价5963修订版4,而报价5963修订版1,2,3将不存在。

使用MySQL 5.6。我有一个视图,该视图从一个名为listquotes的主表中获取,而从其他表中获取其他一些项。表中也在视图中的导入列是Quote#和...

mysql sql mysql-5.6
1个回答
0
投票

子条件内的条件view_allquoteinfo。Quote # = t。Quote #不明确(t和view_allquoteinfo是同一表)

© www.soinside.com 2019 - 2024. All rights reserved.