Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida com consutla distinct


Rafael Spilki

Pergunta

Galera, to com uma dúvida aqui que nunca tinha me ocorrido...

Vejam, tenho uma tabela (bb access) com dois campos:

codigo, cursos e condicao

no campo cursos eu listo os cursos dos registros das seguintes formas:

curso1, curso2, curso3

no campo condicao listo simpesmente se esta aberta ou fechada (vaga do curso aberta ou fechada, sacaram?)

Bom, agora vamos pensar o seguinte bd:

codigo | cursos | condicao

1 | curso1, curso3 | aberta

2 | curso2 | fechada

3 | curso2, curso5 | aberta

O que eu preciso é listar todos os cursos (sem que se repitam - distinct), em ordem alfabetica, cuja condicao seja aberta. O resultado do select teria que ser este:

curso1

curso2

curso3

curso5

Resumo: acredito que eu tenha que trabalhar enviando os resultados dos cursos abertos para um array e depois separar pela virgulas (o que é bem fácil). Minha dúvida é como fazer isso usando o distinct e posicionando ainda os resultados em ordem alfabética...

Alguém se habilita?

Editado por Rafael Spilki
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom... eu já resolvi meu problema... só que de outra forma...

Todo caso, a questão acima me intrigou... portanto, por objetivo de estudos... se alguém topoar o desafio de tentar construir esse select... até o fim da semana pretendo, se conseguir, montar um e postar aqui...

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Olha... no access eu não sei não.. mas no MySql da pra fazer assim:

Supondo que você tenha apenas duas chaves no campo, exemplo "curso1,curso2", então a SQL ficaria assim;

select DISTINCT (REPLACE(SUBSTRING(SUBSTRING_INDEX(nome, ",", 1), LENGTH(SUBSTRING_INDEX(nome, ",", 1 -1)) + 1), ",", '') ) from ttapete UNION (select DISTINCT (REPLACE(SUBSTRING(SUBSTRING_INDEX(nome, ",", 2), LENGTH(SUBSTRING_INDEX(nome, ",", 2 -1)) + 1), ",", '') ) from ttapete)

Se tivesse mais chaves, bastaria fazer mais unions....

No access eu acho que não rolaria isso não...

Att;

Link para o comentário
Compartilhar em outros sites

  • 0

Em primeiro lugar gostaria de concordar com o bareta, faz sentido e, é muito útil o split. Agora fiquei aqui pensando... Não é um desafio, é uma pegadinha com os novatos ansiosos em se transformarem em guru da programação. Em outras palavras, utilidade zero para a organização da informação e praticidade na apresentação das informações sem contar em correr o risco de conflitos ou, se transformar em uma bola de neve no exclui e insere informações diárias.

Bom, na minha atrasada opinião, isto se trata de cursos e cursos são previamente definidos, ou seja, com linhas definidas para leitura das informações. Exemplo:

codigo | curso |condicao

1 |Matemática |Aberto

2 |Informática |Fechado

3 |Direito |Aberto

Por qual razão faria isto? Exemplo:

codigo | curso |condicao

1 |Matemática, Filosofia |Aberto

2 |Direito |Fechado

3 |Direito, Química |Aberto

Não tem o menor sentido da economia de bates, não vejo um ganho em absolutamente nada em termos de otimização de dados ou apresentação da informação, e muito menos economia de espaço físico nas unidades. Vejo sim, uma complicação extremamente desnecessária.

Seria o feijão com arroz, exemplo:

codigo | curso |condicao

1 |Matemática |Aberto

2 |Filosofia |Aberto

3 |Direito |Fechado

4 |Direito |Aberto

5 |Química |Aberto

Para mim é uma pegadinha e não um desafio, complicar para vender uma solução não é uma saída bacana, porém, caso tenha que abrir e fechar um curso, ai vem a bola de neve, upload e referentes cursos em diferentes colunas. Um inferno desnecessário para programador resolver. Sinceramente, uma perda de tempo dedicar-se neste estudo. Concordo com o Bareta em usar split para resolver o problema dos registros com vírgulas, mas a pergunta é: Para que inseri-los com vírgulas e em colunas os registros diferentes em seu verbetes!? Por quê não em linhas? Seria mais fácil e menos problemático para quem tem filhos para criar e fazer as coisas com certa rapidez, ou seja, ganhar dinheiro rápido e com eficiência.

Uma opinião pessoal. Ganhar dinheiro é fazer feijão com arroz com muita criatividade em otimização de chamadas, inserções e consultas o resto é pura vaidade de programadores novos (5 anos no mercado). Eu tenho 14 anos no mercado e... É chato... Uso o Script Brasil há mais de 6 anos, do tempo que se podia responder sem ser usuário, parei por um tempo por isto mesmo, gurus de mais no mesmo lugar e isto foi e é complicado até hoje no Script Brasil. Já perdi contas e mais contas aqui por isto.

Sou do tempo que Bareta era usuário novato e hoje vejo que é moderador (Fico feliz com suas conquistas por aqui, respeito tem de muita gente boa dos bastidores da internet, o meu você tem também bareta). Fiquem todos com Deus e que as luzes do céu iluminem o caminho de cada um. Paz profunda!

Arroz com feijão, é o caminho mais rápido para o merecido pagamento em nossa conta bancária(rapaz que coisa...).

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...