Buscar recurso disponível em determinado período

SQL

MySQL

Modelagem

08/08/2017

Boa noite pessoal!

Preciso de uma ajuda com SQL.

É o seguinte: Tenho uma tabela de atividades com as colunas cod_recurso, cod_area, dt_inicio,dt_fim e preciso buscar os recursos de uma área específica que não estão sendo utilizados em um determinado período.

O período por exemplo é do dia 05-08-2017 a 25-08-2017, se o usuário da área já estiver alocado neste período ou não possa assumir outra atividade neste período, não deve ser listado e sim somente os que estão livres.

Estou fazendo assim, mas acho que não está correto.

select distinct tr.cod_tipo_recurso, tr.nm_tipo_recurso, tr.cod_area from tipo_recurso as tr
where 
tr.cod_area = 6 
and tr.cod_tipo_recurso not in
(select distinct at.cod_tipo_recurso from atividade_recurso as at 
where 
at.cod_area = 6 and
dt_plano_inicio BETWEEN '2017-08-05' AND '2017-08-25' 
and 
dt_plano_fim BETWEEN '2017-08-05' AND '2017-08-25'
)


Agradeço a ajuda
Marcos

Marcos

Curtidas 0

Respostas

Marcos

Marcos

08/08/2017

Mais detalhes:

Tabela recurso
cod_recurso cod_area nome
1 6 João
2 6 Marcos
3 6 Pedro

Tabela atividade
cod_atividade cod_recurso cod_area dt_inicio dt_fim
1 1 6 2017-08-05 2017-08-20
2 2 6 2017-08-19 2017-08-19

Com o SQL abaixo está mostrando todos os recursos, mas na verdade deveria mostrar somente o usuário Pedro que não está sendo usado no período.
select distinct r.cod_recurso, r.nome, r.cod_area from recurso as r
where 
r.cod_area = 6 
and r.cod_recurso not in
(select distinct at.cod_recurso from atividade as at 
where 
at.cod_area = 6 and
dt_inicio >= ''''2017-08-04'''' AND dt_fim <= ''''2017-08-18''''
)
GOSTEI 0
Santos

Santos

08/08/2017

Opa Marcos, beleza?

Sem o banco rodando aqui fica complicado testar a consulta...

Mas você já testou remover o distinct do segundo select? Olhando assim, a consulta parece estar certa, mas sem o banco pra testar fica ruim de te dar alguma resposta concreta...

Abraços!
GOSTEI 0
POSTAR