resolvido - mysql ordenar a saida de dados

Iniciado por zelito, 30 de Novembro de 2010, 23:30

tópico anterior - próximo tópico

zelito

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?

f_Candido

Opa,

Bom, para ordenar temos o :

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

agente100gelo

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

zelito

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' ";