Autor Tópico: resolvido - mysql ordenar a saida de dados  (Lida 1867 vezes)

Offline zelito

  • Usuário Ubuntu
  • *
  • Mensagens: 39
    • Ver perfil
resolvido - mysql ordenar a saida de dados
« Online: 30 de Novembro de 2010, 23:30 »
Boa noite.

Segue o exemplo:

Na tabela: Clientes
Nome, telefone, email, tp (tipagem sanguinea).
JOSE, 8829-5625, exemplo@ig.com, A
MARIA, 8829-5625, exemplo@ig.com, O
PEDRO, 8829-5625, exemplo@ig.com, AB

se eu ordenasse os dados pela tipagem sanguina (tp) crescente seria:
JOSE, 8829-5625, exemplo@ig.com, A
PEDRO, 8829-5625, exemplo@ig.com, AB
MARIA, 8829-5625, exemplo@ig.com, O

gostaria de ordenar pela tipagem sanguinea, mas não pela ordem crescente ou decrescente e sim, por exemplo, que as pessoas com AB fossem listadas primeiro e depois as com O.
Ou outro exemplo, as pessoas dos estados de SP, depois MA, nos campos UF
É possível fazer isso?
« Última modificação: 03 de Janeiro de 2011, 11:14 por zelito »

Offline f_Candido

  • Usuário Ubuntu
  • *
  • Mensagens: 8
  • Compartilhar conhecimentos!!!
    • Ver perfil
Re: mysql ordenar a saida de dados
« Resposta #1 Online: 04 de Dezembro de 2010, 16:07 »
Opa,

Bom, para ordenar temos o :

Código: [Selecionar]
order by
Mas confesso que não entendi o padrão que tu se refere, pode ser mais claro?


Abraços
Fagner Candido
Bacharelando em Ciência da Computação

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: mysql ordenar a saida de dados
« Resposta #2 Online: 04 de Dezembro de 2010, 18:39 »
Você teria que criar outra tabela chamado tiposanguineo com campos id e ordem. Ex:

O - 4
AB - 1...

Você faz um "left join" e coloca pra ordenar pelo campo ordem desta nova tabela. Do mesmo jeito com as UFs.
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline zelito

  • Usuário Ubuntu
  • *
  • Mensagens: 39
    • Ver perfil
Re: mysql ordenar a saida de dados
« Resposta #3 Online: 03 de Janeiro de 2011, 11:07 »
Resolvido: segue um exemplo

$query = "SELECT UPPER(nome), date_format(dtnasc,'%d-%m-%Y'), parentesco, foneresid, celular, LCASE(email), obs,      YEAR(CURDATE())-YEAR(dtnasc))-(RIGHT(CURDATE(),5)< RIGHT(dtnasc,5)) AS ano, CONCAT('$link1', id, '$link2'), CONCAT('$del1', id, '$del2') 
FROM aniversario
ORDER BY obs='Sobrinho', obs='Sobrinha', obs='Irmão', obs='Irmã', obs='Mãe', dtnasc";

ou

ORDER BY sangue='A', sangue='B', sangue='AB', sangue='O' ";