Ir para conteúdo

POWERED BY:

Arquivado

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

Player Undercover

DISTINCT não funciona corretamente

Recommended Posts

galera, preciso fazer um distinct mas ele não funciona corretamente.

 

minha consulta é a seguinte:

 

SELECT DISTINCT(c.id_departamento), d.departamento, d.arquivo, c.id, c.fantasia, c.hotsite FROM `departamento` d INNER JOIN (`cliente` c INNER JOIN `financeiro` f ON c.id=f.id_cliente) ON c.id_departamento=d.id WHERE c.status='T' AND f.id_plano='7' AND c.hotsite!='' ORDER BY RAND() LIMIT 4

 

tem que ser listados 4 departamentos dinstintos, não podem ser repetidos, em seguinte tem que mostrar um cliente que esteja nesse departamento e no plano selecionado, porém, os departamentos estão se repetindo.

 

A consulta tá funcionando, mas a cada 3, 4 consultas realizadas ele repete um departamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que ser listados 4 departamentos dinstintos, não podem ser repetidos, em seguinte tem que mostrar um cliente que esteja nesse departamento e no plano selecionado, porém, os departamentos estão se repetindo.

 

Então... pelo que eu entendi, nesse caso repetir ou não é relativo.

- Esse campo cliente, que também esta sendo retornado, existe a possíbilidade de mais de um cliente estar contido dentro deste determinado departamento ? (pelo que me parece, sim) se sim, vai repetir mesmo, a não ser que você faça um agrupamento propício a sua necessidade.

 

Ou, tenta jogar um distinct no cliente também, mas dai vai de você e sua interpretação de consistência dos mesmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O distinct é para TODOS os elementos da linha.

Não só para o departamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Everton.

 

o cliente pode repetir, pois ele pode estar cadastrado no departamento A e no departamento B, o que não pode repetir é o departamento.

 

UPDATE: o cliente não vai repetir, pois ele só pode ser cadastrado em um departamento.

 

----------

 

vou explicar como o sistema deve funcionar, talvez ajude.

 

preciso exibir 4 departamentos aleatorios e retornar um cliente que esteja cadastrado nesse departamento e no plano informado, sendo que, estes departamentos não podem se repetir, o cliente pode ser repetido ou não, isso tanto faz. o que não pode repetir de jeito nenhum são os departamentos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por sql creio ser complicado.

 

Eu faria uma procedure.

 

Repete o laço até 4 departamentos

__Escolhe um aleatoriamente (diferentes dos anteriores)

____Escolhe 1 ou mais clientes deste departamento

_______Monta um objeto que possa ser lido (tabela temporária/procedure/function etc)*

 

------------------------

*-No Oracle eu faria uma tabela temp, no Mysql não sei a melhor solução.

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.