Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: zelito em 30 de Novembro de 2010, 23:30

Título: resolvido - mysql ordenar a saida de dados
Enviado por: zelito em 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?
Título: Re: mysql ordenar a saida de dados
Enviado por: f_Candido em 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
Título: Re: mysql ordenar a saida de dados
Enviado por: agente100gelo em 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.
Título: Re: mysql ordenar a saida de dados
Enviado por: zelito em 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' ";