Operación Inner Join en SQL Server
Cuando empezamos a iniciar nuestros estudios en bases de datos, aprendemos a crear tablas y a relacionarlas unas con otras, pero después conforme vamos avanzando se nos presenta un problema que es cuando hacemos una operación de selección a una tabla y nos aparece algo como lo siguiente:
Es una tabla donde al mostrar los datos una operación de selección nos aparece con el idcategoria y lo que deseamos es que aparesca el nombre de la categoría al que pertenece ese producto. Entonces es en estos casos cuando usamos inner join lo cual es una operación que nos va permitir unir los registros de dos tablas teniendo en cuenta algún campo en común que en nuestro caso sería idcategoria.
Para comenzar con nuestro ejemplo crearemos una base de datos y agregaremos tablas hasta llegar al caso y aprender a usar la operación inner join.
Empezamos creando la base de datos BDSistek.
Agregamos la tabla Categoria teniendo el siguiente diseño:
También agregamos la tabla Producto:
Después de haber terminado de crear las tablas relacionamos las tablas Categoria y Producto, quedando con el siguiente diseño:
Nos faltaría agregar datos a cada una de las tablas en el caso de la tabla Categoria quedaría así:
y la tabla Producto con estos datos:
Ahora usaremos la operación inner join para mostrar la categoria al hacer una selección a la tabla producto.
Sentencia Normal:
select * from Producto;
Sentencia con Inner Join:
select p.idproducto,p.nombre,p.precio,p.stock,c.descripcion as categoria from Producto p inner join Categoria c on c.idcategoria=p.idcategoria;
Para cada tabla se coloca un alias y con ella se llama a cada campo de la tabla así no tendremos un error de ambiguedad al haber campos con el mismo nombre ya que los registros de ambas tablas se unen y por supuesto el campo idcategoria seria ambiguo ya que existe un campo en la tabla producto y el otro en categoria. Después usamos la claúsula on para indicar que campos son los comunes entre ambas tablas, por lo general ambos campos tienen el mismo nombre pero eso puede variar según cada caso.
Ejecutando nos quedaría de la siguiente forma:
Ahora si tendríamos una tabla con más de un campo id común relacionándose con otra tabla tendríamos que usar el mismo inner join pero usándolo según la cantidad de campos.
Para nuestro nuevo ejemplo crearemos una tabla Estado y la relacionamos con la tabla Producto.
Realizando la selección normal tendríamos este caso:
Usando la selección con Inner join
select p.idproducto,p.nombre,p.precio,p.stock,c.descripcion as categoria,
e.descripcion as estado from Producto p inner join Categoria c on
c.idcategoria=p.idcategoria inner join Estado e on e.idestado=p.idestado;
Como vemos solo volvemos a añadir el inner join despues de haber especificado los campos comunes entre la tabla producto y categoria luego se continua agregando otro inner join pero los campos comunes entre producto y estado.
Publicar un comentario
0 Comentarios