DUVIDA NO RETORNO DOS DADOS
E ae galera, alguem pode me ajudar.. seguinte:
tenho duas tabelas:
======================
__________aluno_________
id nome ...
1 Jose
2 Maria
3 Joaquim
4 Manoel
======================
________turmas________
id userid idtipo
1 1 1 => Administrador
2 1 2 => Aluno
3 1 4 => Tutor
4 2 2
5 2 3 => Secretária
6 3 2
7 4 3
queria mostrar todos os alunos que fizessem relacao com a tabela turmas e nao fosse com o idtipo igual a 1 (porque o idtipo 1 é administrador, mas pode ser aluno e/ou tutor tambem, mas como ele é administrador nao poderá mostrar ele)
eu fiz assim:
SELECT distinct a.id, a.nome, t.idtipo FROM aluno a, turmas t INNER JOIN aluno a on a.id = t.idtipo WHERE t.idtipo <> 1
o problema é que está me retornando dados duplicados, assim:
id nome idtipo
1 Jose 2
1 Jose 4
2 Maria 2
2 Maria 3
3 Joaquim 2
4 Manoel 3
e não é isso que eu quero... eu quero que me retorne todos os alunos, mas se na tabela turma esse aluno tiver um registro marcado com o idtipo 1 nao quero que me retorne esse aluno.
estou usando o MySQL e VB
alguem pode me dar uma luz....
tenho duas tabelas:
======================
__________aluno_________
id nome ...
1 Jose
2 Maria
3 Joaquim
4 Manoel
======================
________turmas________
id userid idtipo
1 1 1 => Administrador
2 1 2 => Aluno
3 1 4 => Tutor
4 2 2
5 2 3 => Secretária
6 3 2
7 4 3
queria mostrar todos os alunos que fizessem relacao com a tabela turmas e nao fosse com o idtipo igual a 1 (porque o idtipo 1 é administrador, mas pode ser aluno e/ou tutor tambem, mas como ele é administrador nao poderá mostrar ele)
eu fiz assim:
SELECT distinct a.id, a.nome, t.idtipo FROM aluno a, turmas t INNER JOIN aluno a on a.id = t.idtipo WHERE t.idtipo <> 1
o problema é que está me retornando dados duplicados, assim:
id nome idtipo
1 Jose 2
1 Jose 4
2 Maria 2
2 Maria 3
3 Joaquim 2
4 Manoel 3
e não é isso que eu quero... eu quero que me retorne todos os alunos, mas se na tabela turma esse aluno tiver um registro marcado com o idtipo 1 nao quero que me retorne esse aluno.
estou usando o MySQL e VB
alguem pode me dar uma luz....
SELECT distinct a.id, a.nome, t.idtipo FROM aluno a, turmas t INNER JOIN aluno a on a.id = t.iduser WHERE t.idtipo <> 1
Tenta assim.
Tenta assim.
Tente isso:
Select aluno.?, aluno.?, turma.?, Turma.? Idtipo.? from aluno inner join turma on aluno.id=turma.id left join IDtipo on aluno.ID=IDtipo.id where idtipo (critério)
? = dado pretendido
Se estiver falhando dêm uma olhadela nas joins
na tabela IDtipo também deve ter um campo que identifique o IDaluno para que a join funcione!
Select aluno.?, aluno.?, turma.?, Turma.? Idtipo.? from aluno inner join turma on aluno.id=turma.id left join IDtipo on aluno.ID=IDtipo.id where idtipo (critério)
? = dado pretendido
Se estiver falhando dêm uma olhadela nas joins
na tabela IDtipo também deve ter um campo que identifique o IDaluno para que a join funcione!
ja tentei assim tambem, mas continua me retornando o aluno duplicado, ...
pois na tabela turma existe registro dele com outros tipos, entao a consulta me retorna esses tipos
pois na tabela turma existe registro dele com outros tipos, entao a consulta me retorna esses tipos
Deve ser isso...
SELECT T1.ID, A1.NOME,T1.IDTIPO
FROM TURMAS AS T1, ALUNO AS A1
WHERE T1.USERID=A1.ID
AND (SELECT COUNT(*) FROM TURMAS AS T2 WHERE T1.USERID=T2.USERID AND IDTIPO=[ô]1[ô])=0;
Resultado:
ID NOME IDTIPO
4 Maria 2
5 Maria 3
6 Joaquim 2
7 Manoel 3
SELECT T1.ID, A1.NOME,T1.IDTIPO
FROM TURMAS AS T1, ALUNO AS A1
WHERE T1.USERID=A1.ID
AND (SELECT COUNT(*) FROM TURMAS AS T2 WHERE T1.USERID=T2.USERID AND IDTIPO=[ô]1[ô])=0;
Resultado:
ID NOME IDTIPO
4 Maria 2
5 Maria 3
6 Joaquim 2
7 Manoel 3
SELECT distinct a.nome FROM aluno a, turmas t INNER JOIN aluno a on a.id = t.iduser WHERE t.idtipo <> 1
Tenta assim.
para usar o distinct use somente o campo a.nome na consulta que vai dar certo.
Tenta assim.
para usar o distinct use somente o campo a.nome na consulta que vai dar certo.
Citação::
Deve ser isso...
SELECT T1.ID, A1.NOME,T1.IDTIPO
FROM TURMAS AS T1, ALUNO AS A1
WHERE T1.USERID=A1.ID
AND (SELECT COUNT(*) FROM TURMAS AS T2 WHERE T1.USERID=T2.USERID AND IDTIPO=[ô]1[ô])=0;
Resultado:
ID NOME IDTIPO
4 Maria 2
5 Maria 3
6 Joaquim 2
7 Manoel 3
valeu cara, desse seu exemplo eu consgui fazer o ue queria, ficou assim:
SELECT DISTINCT T1.ID, A1.NOME,T1.IDTIPO FROM TURMAS AS T1 INNER JOIN ALUNO AS A1 ON T1.userid = A1.id WHERE T1.idtipo = 2 AND T1.userid NOT IN(SELECT userid FROM turmas WHERE idtipo=1)
Tópico encerrado , respostas não são mais permitidas