Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

huerta

Contando com tabelas relacionadas

Recommended Posts

Bom Dia pessoal.

 

Minha dificuldade esta no select.

 

Tenho 3 tabelas:

aluno, materia, aluno_materia(1 para n).

 

aluno:

idAluno,nome

 

materia:

idMateria,nome

 

aluno_materia:

idAluno, idMateria

 

Um aluno pode ter mais de uma materia, como poderia contar quantos alunos

eu teria com mais de uma materia, ex:

 

select count(a.idAluno)

from aluno a

left join aluno_materia am on(am.idAluno=a.idAluno)

where idMateria = 1 and idMateria= 2 and idMateria = 3

 

Como contar quantos aluno tem as tres materias juntas?

Obs: ja não posso mudar a estrutura das tabelas e seus relacionamentos.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT id_aluno,
count(*) FROM aluno_materia group by idAluno
ja que voce utiliza uma tabela com 2 chaves, voce apenas agrupa a coluna do aluno,

e deixa a contagem variar na materia,

mas rode esse comando tambem com distinc na materia, so para ver se nao tem algo de errado, do tipo aluno cadastrado em materias com ids iguais.

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

koga021,

eu percebi que o comando informado mostra quantas materias cada aluno tem. Minha dificuldada esta

em conseguir quantos alunos no total fazem determinadas materias juntas, pois quando uso a condição

where idMateria = 1 and idMateria= 2 and idMateria = 3 o resultado vem zerado. Essa condição

pode variar de 1 , 2 ou mais materias, ex:

Quantos alunos fazem as materias: php ?

Quantos alunos fazem as materias: php + mysql ?

Quantos alunos fazem as materias: php + mysql + css ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

koga021,

eu percebi que o comando informado mostra quantas materias cada aluno tem. Minha dificuldada esta

em conseguir quantos alunos no total fazem determinadas materias juntas, pois quando uso a condição

where idMateria = 1 and idMateria= 2 and idMateria = 3 o resultado vem zerado. Essa condição

pode variar de 1 , 2 ou mais materias, ex:

Quantos alunos fazem as materias: php ?

Quantos alunos fazem as materias: php + mysql ?

Quantos alunos fazem as materias: php + mysql + css ?

 

Obrigado.

 

 

aluno:

idAluno,nome

 

materia:

idMateria,nome

 

aluno_materia:

idAluno, idMateri

 

A lista geral de quantos aluno fazem cada materia

SELECT count(*) FROM aluno_materia group by idMateri

Abaixo um codigo com ais diferente

SELECT a.count(*),b.count(*),c.count(*)
FROM 
aluno_materia as a,
aluno_materia as b,
aluno_materia as c
WHERE 
a.idAluno=b.idAluno AND
a.idAluno=c.idAluno AND
(a.idMateria='1' AND a.idMateria='2' AND a.idMateria='3')

Voce da um nome diferente para a mesma tabela, apos isso voce deve informar que os ids dos alunos sao iguais
e entre () os ids das materias.
A logica e como se fossem 3 tabelas diferentes e cada tabela possui 1 id, em comum ou nao, e cada tabela fosse uma materia.
testa ai.
abḉ

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.