sábado, 14 de octubre de 2017

octubre 11 2017

Enlazar tablas

Vamos a seguir con el ejemplo de ayer para ver como podemos enlazar tablas usando el comando joins de select.
Teníamos la base de datos biblioteca. Para los que justo os incorporáis al curso, la podéis crear y seleccionar con:
1create database biblioteca;
2use biblioteca;
Volvemos a crear la tabla libros, pero esta vez incluimos el campo editorial:
1create table libros(
2       libro_id int unsigned auto_increment,
3       titulo varchar(50) not null,
4       autor varchar(30) not null default 'Desconocido',
5       codigo_editorial int unsigned not null,
6       cantidad smallint unsigned default 0,
7      primary key (libro_id)
8 );
Y ahora también creamos una tabla editoriales:
1create table editoriales (
2      editorial_id int unsigned auto_increment,
3      nombre_editorial varchar(25) not null,
4     primary key (editorial_id)
5);
Ahora necesitamos crear una serie de registros para ambas tablas para ver el funcionamiento en la práctica:
1insert into libros (titulo, autor, codigo_editorial, cantidad)
2              values ("Técnicas avanzadas de posicionamiento en buscadores""Fernando Maciá Domene", 1, 2);
3insert into libros (titulo, autor, codigo_editorial, cantidad)
4              values ("Diseño Web con CSS""Ralph G. Schulz ", 2, 1);
5insert into libros (titulo, autor, codigo_editorial, cantidad)
6              values ("Usabilidad. Prioridad en el diseño Web""Jakob Nielsen", 1, 1);
1insert into editoriales (nombre_editorial) values ("Anaya");
2insert into editoriales (nombre_editorial) values ("Marcombo");
En la tabla editoriales, Anaya es el registro 1 y Marcombo el registro 2. Ahora queremos mostrar los libros de la editorial Anaya, probad esto:
1select from libros where codigo_editorial=1;
Veremos que efectivamente sólo se muestran los libros de la editorial Anaya, pero en el campo editorial aparece el número 1. Lo que nosotros queremos es que en este campo aparezca el nombre de la editorial y no su código. Aquí entra el comando left join para vincular tablas.

Left join

1select from libros join editoriales
2       on editoriales.editorial_id = libros.codigo_editorial;
En este caso, vemos los libros de todas las editoriales, pero también aparece los campos codigo_editorial y editorial_id que no queremos visualizar en los resultados:

Para evitarlo, cambiamos el comodín asterisco por los campos que queremos visualizar:
1select libros.titulo, libros.autor,libros.cantidad, editoriales.nombre_editorial
2                 from libros join editoriales on editoriales.editorial_id = libros.codigo_editorial;
El resultado es:

Si solo queremos visualizar los libros de la editorial Anaya, entonces hemos de modificar el código:
1select  libros.titulo, libros.autor,libros.cantidad, editoriales.nombre_editorial 
2              from libros join editoriales on editoriales.editorial_id = libros.codigo_editorial
3             where libros.codigo_editorial=1;
Finalmente, el resultado es:

Hay otros tipos de comandos join, para más información te invitamos a ver la documentación oficial de MySQL.

Unión de tablas

Con MySQL también podemos unir las consultas a varias tablas en un único conjunto de resultados. Para ello utilizamos el comando union. Es importante tener en cuenta que ambas tablas han de tener el mismo número de campos o nos dará error. Un ejemplo será:




1select libros.titulo from libros union selecteditoriales.nombre_editorial from editoriales;}






http://www.esandra.com/es-curso-de-mysql-comandos-y-funciones-de-mysql-phpmyadmin/

No hay comentarios.:

Publicar un comentario