CONSULTA SQL AVANCADA

USUARIO.EXCLUIDOS 04/06/2007 22:43:47
#219738
Pessoal estou com dificuldade pra gerar uma consulta sql no access ja fiz de tudo, left join, right, not exists, left outer e etc e nao estou conseguindo gerar essa consulta, creio que seja uma limitacao do access pois ele nao da suporte a MINUS e INTERSECT mas creio que talvez alguem saiba fazer isso por um outro caminho que nao conheco. Veja a imagem no link abaixo la explica o que preciso. abracos.

http://img465.imageshack.us/img465/7283/imagemml9.jpg

USUARIO.EXCLUIDOS 04/06/2007 23:02:29
#219739
Tenta utilizar subquery:

SELECT * FROM cursos_prereq_concluido WHERE login = 01158410 AND habilitado NOT IN (SELECT habilitado FROM cursos_prereq_nconcluido WHERE login = 01158410)

Obviamente caso de certo teriamos que parametrizar login.
Qualquer duvida postae.
USUARIO.EXCLUIDOS 05/06/2007 14:52:40
#219864
Sobre a citacao para migracao para sql server isso nao posso fazser heheheh pois estou programando o access em uma grande empresa, aqui tem varios servidores com sql server mas pra esse projeto tem q ser o access msm.
USUARIO.EXCLUIDOS 05/06/2007 15:14:07
#219869
Citação:

EVEREST escreveu:
Sobre a citacao para migracao para sql server isso nao posso fazser heheheh pois estou programando o access em uma grande empresa, aqui tem varios servidores com sql server mas pra esse projeto tem q ser o access msm.



Seu chefe pode até obrigar a utilizar esta tecnologia, mas em Sistema Multi-User e/ou em Rede BD de arquivos como o Access, Dbase, etc, não são indicadas por falta de desempenho e principalmente segurança.

Mas o que eu não entendi é se funcionou ou não a consulta descrita por mim; creio que nao afinal o tópico está aberto.
Senão, qual foi o erro ?
USUARIO.EXCLUIDOS 05/06/2007 15:32:20
#219875
Fiz assim, segue a tabela com o modelo.

SELECT Cursos_prepreq_concluido.aluno, Cursos_prepreq_concluido.login,Cursos_prepreq_concluido.habilitado,Cursos_prepreq_concluido.avaliacao
FROM Cursos_prepreq_concluido
WHERE NOT EXISTS(SELECT * FROM Cursos_prereq_nconcluido WHERE Cursos_prepreq_concluido.aluno = Cursos_prereq_nconcluido.aluno AND Cursos_prepreq_concluido.habilitado = Cursos_prereq_nconcluido.habilitado)

Segue um modelinho.
USUARIO.EXCLUIDOS 05/06/2007 17:12:03
#219894
As duas consultas falharam mas eu ja descobri o erro.

SELECT *
FROM CURSOS_PREREQ_CONCLUIDO
WHERE LOGIN = Formulários![fm_habilitados_para_cursos]![txt_login] AND HABILITADO NOT IN (SELECT HABILITADO FROM CURSOS_PREREQ_CONCLUIDO WHERE HABILITADO IN(SELECT HABILITADO FROM CURSOS_PREREQ_NCONCLUIDO WHERE LOGIN = Formulários![fm_habilitados_para_cursos]![txt_login]) AND LOGIN = Formulários![fm_habilitados_para_cursos]![txt_login]);

essa funcionou, o problema e que o access nao suporta o operador minus, COMO ABAIXO:

SELECT * FROM cursos_prereq_concluido WHERE login = 01158410 AND habilitado MINUS (SELECT * FROM cursos_prereq_nconcluido WHERE login = 01158410)

USUARIO.EXCLUIDOS 05/06/2007 17:19:00
#219898
Ok, realmente eu utilizei um exemplo baseado em SQL Server. Vc poderia especificar o erro que ocorreu com o NOT IN ?
USUARIO.EXCLUIDOS 05/06/2007 17:30:49
#219902
E que tal descomplicar?

Basta usar duas consultas e comparar uma à outra.



rs1.open "select * from CURSOS_PREREQ_CONCLUIDO Where Login = xxxx"
rs2.open "select * from CURSOS_PREREQ_NCONCLUIDO Where Login = xxx"

Dim iguais as Boolean

while not rs1.eof

iguais=false

while not rs2.eof

if rs1!habilitado = rs2!habilitado then
iguais=true
end if

rs2.movenext
wend

if iguais=false then
resultado=rs1!habilitado
end if

rs1.movenext
wend



Não testei, mas penso que funcionará. Qualquer dúvida sabe onde me encontrar :)
USUARIO.EXCLUIDOS 05/06/2007 19:31:23
#219919
Amigão, da uma olhada direitinho no meu exemplo por que este comando abaixo funcionou perfeitamente:

SELECT * FROM cliente WHERE id_cliente NOT IN (SELECT id_cliente FROM pedido)

Trouxe todos cliente cadastrados que não fizeram pedido
(Todos Cliente - Cliente com pedidos = Clientes Sem pedidos)

Esta foi feita em Access !!
USUARIO.EXCLUIDOS 12/06/2007 19:38:46
#220999
Realmente gostaris de saber o final desta história .... [S61]
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas