Ir para conteúdo

POWERED BY:

Arquivado

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

mbpp

Distinct Não funciona

Recommended Posts

Oi tudo bem? Estou a ter um problema com a minha query, o Distinct não funciona, podem ver porque?

 

SELECT DISTINCT treinos.*, alunos.*,treino_aluno.* FROM treinos, alunos,treino_aluno WHERE treinos.id_treino = treino_aluno.id_treino

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

O uso do * trás TODOS os campos da tabela, isto deve afetarvseu DISTINCT , tente definindo apenas os campos que serão usados ou necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um dos campos listados deve ser chave única logo será distinto dos demais , DISTINCT funciona acredite.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixo abaixo a estrutura das tabelas e a Query que meti. talvez possa ajudar em saber o problema.

 

Tabelas:

alunos:
- id_aluno; (primary key, autoincrement)
- nome;
treinos:
- id_treino; (primary key, autoincrement)
- titulo_treino;
- data
treino_aluno:
- id; (primary key, autoincrement)
- id_treino;
- id_aluno;
Query:
$sql_treino = "SELECT DISTINCT treinos.titulo_treino,treinos.id_treino,treinos.data, alunos.nome, alunos.id_aluno,treino_aluno.id_treino,treino_aluno.id_aluno FROM treinos, alunos,treino_aluno WHERE treinos.id_treino = treino_aluno.id_treino";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O DISTINCT esta funcionando perfeitamente para o SELECT que você esta executando.

 

Qual cenário você deseja distinguir? Qual o resultado esperado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente ele está-me trazendo dados duplicados (não é que esteja incorrecto), porque está correcto mas quero que dados iguais não repitam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só estaria errado se uma linha do select (treinos.titulo_treino,treinos.id_treino,treinos.data, alunos.nome, alunos.id_aluno,treino_aluno.id_treino,treino_aluno.id_aluno) saia duplicada , repito DISTINCT funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo:

SELECT DISTINCT treinos.titulo_treino, alunos.nome FROM treinos, alunos,treino_aluno WHERE treinos.id_treino = treino_aluno.id_treino

Não se repetirão os TREINOS cada um dos ALUNOS.

Se você incluir os IDS, cada linha será diferente da outra, logo, não há o que ser distinguido pelo comando DISTINCT.

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.