Получить последнюю версию документа SQL - PullRequest
0 голосов
/ 20 мая 2011

У меня проблема со следующим 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 - получить последнюю версию группы document_id (у каждого document_id может быть много версий) из id_project и id_req_fun

Я не могу найти никаких проблем.

1 Ответ

0 голосов
/ 20 мая 2011
  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...