MySQL: Montar o alfabeto com as iniciais de uma coluna

Aprenda a montar o alfabeto com as inicias de uma coluna do seu banco de dados.

Vamos usar uma tabela de exemplo, chamada “moveis_categorias”.

+-------------------+
| Nome da Tabela    |
+-------------------+
| moveis_categorias |
+-------------------+
 
mysql> SELECT * FROM moveis_categorias;
+----+-----------+
| id | descricao |
+----+-----------+
|  1 | Armários  |
|  2 | Bancos    |
|  3 | Cadeiras  |
|  4 | Cômodas   |
|  5 | Espelhos  |
|  6 | Mesas     |
|  7 | Sofás     |
|  8 | Poltronas |
|  9 | Racks     |
+----+-----------+
 
mysql> SELECT DISTINCT(SUBSTR(descricao,1,1)) as letra 
FROM moveis_categorias 
ORDER BY letra;
+-------+
| letra |
+-------+
| A     |
| B     |
| C     |
| E     |
| M     |
| P     |
| R     |
| S     |
+-------+

Explicação:
DISTINCT(): utilizado para limpar os valores duplicados (Cadeiras/Cômodas).
SUBSTR(): utilizado para pegar o primeiro caracter (letra inicial)

Ideia de uso:
Você pode montar links que redirecionarão para uma página (moveis.php) que contenha, somente, os móveis com a letra selecionada.

<?
WHILE( expr ){
  // <a href="?letra=A">A</a>
  echo "<a href='?letra={$letra}'>{$letra}</a>";
}
?>

moveis.php – página que conterá os móveis correspondente a letra selecionada.

// atribui o valor passado via URL a variável
$letra = $_GET['letra']; // A
 
// select para trazer somente os móveis que iniciam com a letra pressionada
mysql> SELECT * FROM moveis WHERE titulo_movel LIKE '$letra%';

Ficou com alguma dúvida ou tem uma outra ideia de uso, deixe nos comentários.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *