none
Duvida em Select Distinct RRS feed

  • Pergunta

  • Pessoal, boa noite

    Estou desenvolvendo uma ferramenta e estou com dúvida em um select, não sei como fazer para separar algumas informações. Imaginem o seguinte cenário:

    TabelaAtendentes
    CodigoAtendente
    NomeAtendente
    CodigoCidade

    TabelaCidades
    CodigoCidade
    NomeCidade

    TabelaCidadesAtendentes
    Codigo
    CodigoAtendente
    CodigoCidade

    Obviamente é um cenário simples só para explicar minha dúvida. A tabela de atendentes, é preenchida com dados de pessoas, a de cidade é um cadastro com todas as cidades do brasil e a terceira tabela "TabelaCidadesAtendentes", contem a "amarração" dos atendentes com as cidades que eles atendem, pois um atendente pode estar vinculado à mais de uma cidade.

    Minha dúvida é: Como eu faço para listar as cidades atendidas, só que sem que se repitam, ou seja, como eu faço para dar um select na tabela "CidadesAtendentes" retornando distintamente as cidades e identificando o Nome da Cidade?

    Espero ter sido claro

    No aguardo,

    domingo, 18 de maio de 2014 03:05

Respostas

  • Eder Pardeiro,

    Para não se repetir, você deve usar o DISTINCT no campo desejado, ou seja, código da cidade, na tabela TabelaCidadesAtendentes.

    Ficaria assim:

    SELECT DISTINCT CodigoCidade AS Cidade FROM TabelaCidades

    Esse codigo traz os códigos das cidades sem repetição. Mas como sua intenção é trazer o nome, é necessario um JOIN com a tabela Cidade.

    Logo, o codigo ficará

    SELECT

    DISTINCT TabelaCidades.NomeCidade
    FROM TabelaCidades

    INNER JOIN TabelaCidadesAtendentes

    ON

    TabelaCidades.ID = TabelaCidadesAtendentes.CodigoCidade

    Acho que essa é sua duvida, espero ter ajudado.


    • Editado rodrigoosrn domingo, 18 de maio de 2014 03:36
    • Sugerido como Resposta rodrigoosrn domingo, 18 de maio de 2014 03:46
    • Marcado como Resposta Eder Pardeiro TI domingo, 18 de maio de 2014 04:51
    domingo, 18 de maio de 2014 03:34

Todas as Respostas

  • Eder Pardeiro,

    Para não se repetir, você deve usar o DISTINCT no campo desejado, ou seja, código da cidade, na tabela TabelaCidadesAtendentes.

    Ficaria assim:

    SELECT DISTINCT CodigoCidade AS Cidade FROM TabelaCidades

    Esse codigo traz os códigos das cidades sem repetição. Mas como sua intenção é trazer o nome, é necessario um JOIN com a tabela Cidade.

    Logo, o codigo ficará

    SELECT

    DISTINCT TabelaCidades.NomeCidade
    FROM TabelaCidades

    INNER JOIN TabelaCidadesAtendentes

    ON

    TabelaCidades.ID = TabelaCidadesAtendentes.CodigoCidade

    Acho que essa é sua duvida, espero ter ajudado.


    • Editado rodrigoosrn domingo, 18 de maio de 2014 03:36
    • Sugerido como Resposta rodrigoosrn domingo, 18 de maio de 2014 03:46
    • Marcado como Resposta Eder Pardeiro TI domingo, 18 de maio de 2014 04:51
    domingo, 18 de maio de 2014 03:34
  • Perfeito Rodrigo... era isso mesmo... funcionando agora....
    domingo, 18 de maio de 2014 04:52
  • Rodrigo, boa noite...

    mais uma vez, obrigado pela ajuda.

    Agora estou com mais uma duvida nesse mesmo select. Imagine que na tabela de atendentes eu tenha o campo StatusAtendente e queira listar distintamente somente as cidades que estão vinculadas à atentendes cujo status seja igual à 1

    Devo postar isso em uma nova thread ou posso postar aqui mesmo? você consegue me ajudar nessa?

    No aguardo!

    domingo, 18 de maio de 2014 21:07
  • Boa noite... Consegui...

    SELECT DISTINCT TBCidades.NomeCidade FROM TBCidades inner join TBCidadesPerfil on TBCidades.CodigoCidade = TBCidadesPerfil.CodigoCidade inner join TBPerfil ON TBPerfil.CodigoPerfil = TBCidadesPerfil.CodigoPerfil WHERE TBPerfil.StatusPerfil = 2

    segunda-feira, 19 de maio de 2014 17:55