Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rogerblower

Listando e ordenando por letra

Recommended Posts

Pessoal tenho essa consulta para listar as categorias

e funciona normal

A1

A2

B1

...

SELECT * FROM categorias ORDER BY nome_cat

Mas eu pretendo listar e organizar por letra, assim:

A (categorias que iniciam com a letra A)

A1

A2

...

B (categorias que iniciam com a letra B)

B1

...

Tentei usando LIKE mas só retorna a letra, nesse caso teria que fazer 26 consulta, uma cada letra.

Alguém sabe como montar a consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a SQL

SELECT substr(nome_cat,1,1) letra_inicial,
              categorias.* 
FROM categorias 
ORDER BY nome_cat

a exibição deverá ser tratada na camada de aplicação todavia .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta a consulta funcionou e entendi como funciona o substr, li também que existe o MID mas não me aprofundei na leitura.

Voltando a questão, não consegui tratar como você aconselha, na camada, a consulta ficou assim:

$letra = $pdo->prepare("SELECT substr(nome_cat,1,1) letra_inicial, categorias.* FROM categorias ORDER BY nome_cat");
                          $letra->execute();    
                        
                        if($letra->rowCount() > 0){

                        while($row=$letra->fetch(PDO::FETCH_ASSOC)){
                            
                                    echo ''.$row['letra_inicial'].'<br>';
                                    echo ''.$row['nome_cat'].'<br><br>';    
                            }

Só que ele repete tipo:

A

A1

A

A2

Quando incluo GROUP BY letra_inicial é mostrado comente a primeira ex:

A

A1

Se puder ajudar com mais essa fico muito agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

php não conheço , mas basicamente é guardar a letra anterior e imprimir quando quebrar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.