2011-05-20 80 views
0

我有一个问题,下面的SQL获取文档SQL

SELECT c1.* FROM rmanager.requisitos_nao_funcionais c1 
left join rmanager.requisitos_nao_funcionais c2 
on c1.document_id = c2.document_id and c1.versao < c2.versao 
where c1.id_projeto = 15 
and c1.id_req_fun = 5 
and c2.document_id is null 
order by ordem ASC; 

我已经子查询也

SELECT * 
FROM rmanager.requisitos_nao_funcionais A 
WHERE versao = (
    SELECT MAX(versao) 
    FROM rmanager.requisitos_nao_funcionais B 
    WHERE B.document_id = A.document_id 
) 
and id_req_fun = 5 
order by ordem asc; 

尝试的最新版本,但都返回我

return

它没有得到document_id 1,它应该返回我1,2,3获得最新的他们的版本

表数据低于

enter image description here

的SQL IDEIA是获得DOCUMENT_ID组的最新版本(每个DOCUMENT_ID可以有很多版本)从id_project和id_req_fun

我无法找到任何问题

我会很高兴,如果有人可以帮助我,谢谢

+0

你能否提供更多信息?例如。原始表格c1和c2?一些[文件](http://www.w3schools.com/sql/sql_join_left.asp),可能是有用的。 – Kyle 2011-05-20 16:58:52

+0

@凯尔我改变了,原来的数据库数据在那里,我添加了更多的信息。 – dextervip 2011-05-20 17:07:13

回答

0
SELECT c1.document_id, MAX(c1.version) 
    FROM rmanager.requisitos_nao_funcionais as c1 
    WHERE c1.id_projecto = 15 
    AND c1.id_req_fun = 5 
GROUP BY c1.document_id 

我不知道我是否理解正确,但给了一个项目和一个req_fun,这将给你的设置中的每个文件的最新版本。

现在,如果你想用最大的版本号尝试文件(单一个):

SELECT c1.document_id, c1.version 
    FROM rmanager.requisitos_nao_funcionais as c1 
    WHERE c1.id_projecto = 15 
    AND c1.id_req_fun = 5 
ORDER BY c1.version DESC 
    LIMIT 1 
+0

它显示了什么是最大版本,但我需要获得所有唯一document_id的最新版本,它按文档ID分组,每个document_id可以有5个版本。然后我需要获取所有唯一document_id的最新版本。 – dextervip 2011-05-20 21:50:51

+0

第一个查询做到了。 – 2011-05-21 01:32:11

+0

第一个查询只返回每个唯一的document_id的第一个版本: – dextervip 2011-05-21 01:49:41