Concatenar

Conectando pessoas, ferramentas e idéias.

 

Nos exercícios que realizaremos a seguir, vamos utilizar o banco de dados criado no tópico anterior, bdcarros e suas respectivas tabelas, carros e categorias.

 

GROUP BY

Este comando nos permite agrupar os resultados de uma consulta.

Por exemplo, quero visualizar a quantidade total de registros de cada categoria existente na minha tabela carros, para que isso seja possível utilizaremos o seguinte código:

 

SELECT cod_categoria, COUNT( * ) FROM carros GROUP BY cod_categoria;

 

Neste comando solicitamos para que seja exibido o código da categoria e a soma dos registros de cada uma delas agrupadas devidamente.

Como resultado é exibido que existem duas categorias e cinco carros registrados para cada uma delas.

 

HAVING

Podemos utilizar junto a opção GROUP BY o comando HAVING, que serve para selecionar apenas alguns registros retornados pela opção GROUP BY.

Vamos supor que exista em nossa tabela carros mais um código de categoria registrado e com apenas 2 carros inclusos nessa categoria. 

Para retornar somente categorias que possuam apenas 2 carros cadastrados, digitamos o seguinte comando:

 

SELECT cod_categoria, COUNT( * ) FROM carros GROUP BY cod_categoria HAVING COUNT( * ) =2;

 

Como não existe nenhuma categoria com apenas dois carros cadastrados o resultado será conjunto vazio.

Agora caso você substitua o 2 por 5 no final do comando acima, você visualizará o resultado igual ao exibido na consulta anterior onde utilizamos o GROUP BY , pois em nossa tabela só existem duas categorias com cinco registros cadastrados para cada uma delas.

Podemos também realizar essas consultas utilizando mais de uma tabela e fazendo o relacionamento entre elas.

 

Ex:

SELECT nome_categoria, COUNT( * ) FROM carros, categorias WHERE codigo_categoria = cod_categoria GROUP BY nome_categoria;

 

Como resultado será exibido o nome da categoria e a quantidade de carros registrados para cada uma delas.

 Note que o nome da categoria está presente na tabela categorias e o resto da consulta basicamente ocorre com base na tabela carros.

 


 

ORDER BY

Comando que serve para ordenar os registros retornados por uma consulta a um banco de dados. 

Podemos indicar diversos campos da tabela para serem ordenados, os campos são avaliados sempre da esquerda para a direita.

Por exemplo, vamos mostrar todos os carros da tabela por ordem alfabética:

 

SELECT * FROM carros ORDER BY nome_carro;

 

Este comando basicamente pede para que todos os campos da tabela carros sejam exibidos ordenadamente através do campo nome_carros.

Como resultado a tabela será exibida da seguinte forma:

 

 

 

Você também pode fazer uma ordenação decrescente dos resultados, basta utilizar a opção DESC após o nome do campo.

Ex:

SELECT * FROM carros ORDER BY nome_carro DESC;

 

Como resultado será exibida a tabela da seguinte forma:

 


 

LIMIT

Através dessa opção podemos determinar o número máximo de registros que uma consulta pode retornar.

Por exemplo, se um comprador efetuar uma consulta para saber se existem carros de um determinado fabricante em nosso banco de dados, e em nosso patio tivermos mais de 50 automóveis, obviamente não vamos exibir as informações de todos os 50 carros de uma só vez ao cliente. Provavelmente exibiríamos os 10 primeiros e colocaríamos um link para a próxima página onde seriam mostrados os próximos 10 e assim por diante.

Como na tabela de exemplo temos poucos registros vamos mostrá-los de 2 em 2.

Para pegarmos de 2 em 2 registros, devemos utilizar a opção ORDER BY para ordenar os registros através de algum campo, pois se isso não for feito, a cada consulta os registros apareceram em uma ordem diferente.

Para realizar a consulta dos 2 primeiros registros dessa consulta utilizamos o comando:

SELECT * FROM carros WHERE fabricante LIKE  'Chevrolet' ORDER BY nome_carro LIMIT 2;

 

O comando OFFSET é utilizado em conjunto com o LIMIT, para determinar a partir de qual registro a consulta deve retornar. Portanto para retornar os próximos 2 registros utilizamos o seguinte comando:

 

SELECT * FROM carros WHERE fabricante LIKE  'Chevrolet' ORDER BY nome_carro LIMIT 2 OFFSET 2;

 

E mais 2 registros são exibidos, note que todas as exibições estão ordenadas através do campo nome_carro em ordem alfabética.

 

Basta incrementar o parâmetro OFFSET de 2 em 2 para obter os próximos registros caso existam.

 


 

Encerramos por aqui nossos exercícios de sobre consultas através do phpMyAdmin, com o conteúdo que treinamos em todos os artigos até agora, acho que já é possível que você mesmo crie seus bancos de dados, tabelas e realize consultas sobre eles.

Sempre vão surgir dúvidas, mais faço votos para que os obstáculos nunca te impeçam de continuar, faça da curiosidade uma aliada, os livros e a internet estão sempre a disposição basta você os procurar.

Até mais.