CLAUSULA SQL

MARCELO.VB.PIRA 03/09/2010 22:28:09
#352176
Olá Amigos...

estou com um pepino

tenho a seguinte tabela

nome curso status
marcelo 1 1
marcelo 2 1
marcelo 3 0
marcia 1 1
marcia 2 1
maria 1 0
marta 2 1
mirtes 3 1

preciso de um select q me retorne todos os campos dos registros, cujo curso sejam APENAS 2

no caso, retornaria :

marta 2 1

pois só esse registro tem APENAS curso 2

se eu tentar

select * from tabela where curso=2, vai retornar:

marcelo 2 1
marcia 2 1
marta 2 1

porem, marcelo e marcia TAMBEM estão em outros cursos. teria que ser quem tem APENAS o valor 2 na coluna curso.

Obrigado...


ARNALDOCRUZ 03/09/2010 22:57:09
#352178
Set RsAdo = New ADODB.Recordset
RsAdo.Fields.Append [Ô]Curso[Ô], adInteger
RsAdo.Fields.Append [Ô]Aluno[Ô], adVarChar, 50
RsAdo.Open

Set rs1=cnn.execute([Ô]Select * From tabela Order by Aluno[Ô])
do while not rs1.eoF
set rs2=cnn.execute([Ô]Select Count(ID) as ID From tblAluno Where Curso=2[Ô])
if rs2!ID=1 then
rsado.AddNew
rsado!Curso=2
rsado!Alno=rs1!Aluno
rsado.Update
end if
rs2.close
set rs2=nothing
rs1.moveNext
Loop
rs1.close
set rs1=nothing
JWCELYO 04/09/2010 00:37:38
#352184
já tentou
select * from tabela where curso=2 and aluno=[ô]marta[ô]
select top(1)* from tabela where curso=2 and aluno=[ô]marta[ô]
MARCOSLING 04/09/2010 06:55:29
#352188
Citação:

:
já tentou
select * from tabela where curso=2 and aluno=[ô]marta[ô]
select top(1)* from tabela where curso=2 and aluno=[ô]marta[ô]



Mas pq vc colocou o nome do aluno na query?
RXGOMES 04/09/2010 08:17:31
#352190
Marcelo testei aqui e funcionou

SELECT nome, curso, status
FROM Table1
where nome not in (select nome from table1 where curso <> 2)
MSMJUDAS 04/09/2010 08:18:17
#352191
[Ô]teria que ser quem tem APENAS o valor 2 na coluna curso[Ô]

marcelo, marcia e marta tem o valor 2 na coluna curso, então sempre retornará esses três.

Ou vc queria que só retornasse UM registro?
JWCELYO 04/09/2010 10:44:37
#352197
então o que fazer isso
select * from tabela where curso=2 and aluno=[ô]marta[ô]

mostre mas detalhes sobre o seu projeto que mostraremos como se aplica a syntax acima
MARCELO.VB.PIRA 04/09/2010 13:14:14
#352204
gente...

acho que nao me expliquei direito

a marta nao é o importante...

pensem assim:

tenho uma tabela com mais de 3000 alunos
em outra tabela, tenho os cursos que estes alunos participam...

então, tenho que filtrar quem fez APENAS o curso 2

ou seja: utilizar o nome do aluno nao vai ajudar...

tenho que ir na tabela e buscar quem tem apenas o curso 2
ou o curso 3... ou o curso 4...

A saída do RXGOMES foi perfeita!!!!

resolveu meu problema...

porém... o cliente acaba de me atochar o dedo novamente...



ele vai querer que tem apenas o curso 2 e o 3

ou quem tem apenas o 3 o 4 e o 5

dá licença!!!!!

vou vender tapioca no terminal de onibus!!!!

vou ter menos dor de cabeça...

Obriagdo amigos...

a luta continua!!!!!
LLAIA 04/09/2010 16:03:35
#352213
tente assim:

select nome,curso, count(curso) from Tabela where curso in (3,4,5) group by nome,curso having count(curso)=1
JWCELYO 04/09/2010 16:38:54
#352217
SELECT nome, curso, status
FROM Table1
where nome not in (select nome from table1 where curso <> 2 or 3 or 4)
------------------------------------------------------------------------------------------
SELECT nome, curso, status
FROM Table1
where nome not in (select nome from table1 where curso <> 2 or curso <> 3 or curso <> 4)
---------------------------------------------------------------------------------------------------------
se desse para você posta a base de dados ajudaria muito para ter uma visão melhor do
que você que fazer.
Tópico encerrado , respostas não são mais permitidas