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 04-08-2017 a 18-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.
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'
)