domingo, 8 de abril de 2012

28 - Cláusula order by del select.

Podemos ordenar el resultado de un "select" para que los registros se muestren ordenados por algún campo, para ello usamos la cláusula "order by".

Por ejemplo, recuperamos los registros de la tabla "libros" ordenados por el título:

select codigo,titulo,autor,editorial,precio from libros order by titulo;
 
Aparecen los registros ordenados alfabéticamente por el campo especificado.

También podemos colocar el número de orden del campo por el que queremos que se ordene en lugar de su nombre. Por ejemplo, queremos el resultado del "select" ordenado por "precio":

select codigo,titulo,autor,editorial,precio from libros order by 5;
 
Por defecto, si no aclaramos en la sentencia, los ordena de manera ascendente (de menor a mayor).

Podemos ordenarlos de mayor a menor, para ello agregamos la palabra clave "desc":

select codigo,titulo,autor,editorial,precio from libros order by 
editorial desc;
 
También podemos ordenar por varios campos, por ejemplo, por "titulo" y "editorial":

select codigo,titulo,autor,editorial,precio from libros order by 
titulo, editorial;
 
Incluso, podemos ordenar en distintos sentidos, por ejemplo, por "titulo" en sentido ascendente y "editorial"
en sentido descendente:

select codigo,titulo,autor,editorial,precio 
from libros order by titulo asc, editorial desc;
 
Debe aclararse al lado de cada campo, pues estas palabras claves afectan al campo inmediatamente anterior.


Problema Resuelto: 

Trabajamos con la tabla "libros" de una librería.


Eliminamos la tabla, si existe:

drop table if exists libros;
 
Creamos la tabla estableciendo como clave primaria y "auto_increment" el campo "codigo":

create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar(15),
  precio decimal (5,2) unsigned,
  primary key (codigo)
 );
 
Visualizamos su estructura:

describe libros;
 
Ingresamos algunos registros:

insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Planeta',15.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Martin Fierro','Jose Hernandez','Emece',22.90);
 insert into libros (titulo,autor,editorial,precio)
  values('Martin Fierro','Jose Hernandez','Planeta',39);
 insert into libros (titulo,autor,editorial,precio)
  values('Aprenda PHP','Mario Molina','Emece',19.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Cervantes y el quijote','Borges','Paidos',35.40);
 insert into libros (titulo,autor,editorial,precio)
  values('Matematica estas ahi', 'Paenza', 'Paidos',19);
 
Recuperamos los registros de la tabla "libros" ordenados por el título:

select codigo,titulo,autor,editorial,precio
  from libros order by titulo;
 
Aparecen los registros ordenados alfabéticamente por el campo especificado.

Ordenamos por "precio", colocando el número de orden del campo (5):

select codigo,titulo,autor,editorial,precio
 from libros order by 5;
 
Ordenamos los libros por 2 campos, "titulo" y "editorial":

select codigo,titulo,autor,editorial,precio
  from libros order by titulo, editorial;
 
Ahora los ordenamos en distintos sentidos, por "titulo" en sentido ascendente y "editorial" en sentido descendente:

select codigo,titulo,autor,editorial,precio
 from libros order by titulo asc, editorial desc;
 
 
 
Problema Propuesto:
 
Trabaje con la tabla llamada "medicamentos" que almacena la información 
de los productos que vende una farmacia.

1- Elimine la tabla, si existe.

2- Cree la tabla con la siguiente estructura:
 
 create table medicamentos(
  codigo int unsigned auto_increment,
  nombre varchar(20),
  laboratorio varchar(20),
  precio decimal(5,2),
  cantidad int unsigned,
  primary key(codigo)
 );

3- Visualice la estructura de la tabla "medicamentos".

4- Ingrese los siguientes registros (insert into):
 
 (nombre, laboratorio,precio,cantidad)
  Sertal,Roche,5.2,100
  Buscapina,Roche,4.10,200
  Amoxidal 500,Bayer,15.60,100
  Paracetamol 500,Bago,1.90,200
  Bayaspirina,Bayer,2.10,150
  Amoxidal jarabe,Bayer,5.10,250

5- Ordene los registros por precio, de mayor a menor.

6- Ordene los medicamentos por número del campo "cantidad".

7- Ordene los registros por "laboratorio" (descendente) y cantidad (ascendente).
 

Otros problemas:

A) Trabaje con la tabla "peliculas" que guarda información de películas 
de video en alquiler.

1- Elimine la tabla, si existe.

2- Créela con la siguiente estructura:
 
-codigo (entero, sin signo, autoincrementable),
 -titulo (cadena de 40),
 -actor (cadena de 20),
 -duracion (integer sin signo, máximo valor 200 aprox.),
 -clave primaria (codigo).

3- Visualice la estructura de la tabla "peliculas".

4- Ingrese los siguientes registros: 
 
(titulo,actor,duracion)
 Mision imposible,Tom Cruise,120
 Harry Potter y la piedra filosofal,Daniel R.,180
 Harry Potter y la camara secreta,Daniel R.,190
 Mision imposible 2,Tom Cruise,120
 Mujer bonita,Richard Gere,120
 Tootsie,D. Hoffman,90
 Un oso rojo,Julio Chavez,100

5- Ordene los registros por el campo "actor".

6- Muestre las películas ordenadas por la duración, de mayor a menor.

 
B) En una página web se solicitan los siguientes datos para guardar 
información de sus visitas.

1- Elimine la tabla "visitas", si existe.

2- Créela con la siguiente estructura:
 
 create table visitas (
  numero int unsigned auto_increment,
  nombre varchar(30) not null,
  mail varchar(50),
  pais varchar (20),
  fecha date,
  primary key(numero)
);

3- Ingrese algunos registros: 
 
(nombre,mail,fecha)
  Ana Maria Lopez,AnaMaria@hotmail.com,2006-10-10
  Gustavo Gonzalez,GustavoGGonzalez@hotmail.com,2006-10-10
  Juancito,JuanJosePerez@hotmail.com,2006-10-11
  Fabiola Martinez,MartinezFabiola@hotmail.com,2006-10-12
  Fabiola Martinez,MartinezFabiola@hotmail.com,2006-09-12
  Juancito,JuanJosePerez@hotmail.com,2006-09-12
  Juancito,JuanJosePerez@hotmail.com,2006-09-15

4- Ordene los rergistros por fecha, en orden descendente:
 
5- Ordene por nombre en forma ascendente y fecha en orden descendente:
  

No hay comentarios:

Publicar un comentario