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:
1 | create database biblioteca; |
Volvemos a crear la tabla libros, pero esta vez incluimos el campo editorial:
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, |
Y ahora también creamos una tabla editoriales:
1 | create table editoriales ( |
2 | editorial_id int unsigned auto_increment, |
3 | nombre_editorial varchar (25) not null , |
4 | primary key (editorial_id) |
Ahora necesitamos crear una serie de registros para ambas tablas para ver el funcionamiento en la práctica:
1 | insert into libros (titulo, autor, codigo_editorial, cantidad) |
2 | values ( "Técnicas avanzadas de posicionamiento en buscadores" , "Fernando Maciá Domene" , 1, 2); |
3 | insert into libros (titulo, autor, codigo_editorial, cantidad) |
4 | values ( "Diseño Web con CSS" , "Ralph G. Schulz " , 2, 1); |
5 | insert into libros (titulo, autor, codigo_editorial, cantidad) |
6 | values ( "Usabilidad. Prioridad en el diseño Web" , "Jakob Nielsen" , 1, 1); |
1 | insert into editoriales (nombre_editorial) values ( "Anaya" ); |
2 | insert 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:
1 | select * 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.
Comentarios
Publicar un comentario