Sei sulla pagina 1di 4

La sentencia JOIN en SQL permite combinar registros de dos o

más tablas en una base de datos relacional. En el Lenguaje de


Consultas Estructurado (SQL), hay tres tipo de JOIN: interno,
externo, y cruzado.

En casos especiales una tabla puede unirse a sí misma,


produciendo una auto-combinación, SELF-JOIN.

Matematicamente, JOIN es composición relacional, la operacion


fundamental en el álgebra relacional,y generalizando es una
funcion de composicion.

Es una forma de recuperar datos mediante un SELECT uniendo dos


o más tablas.

Cuando entré a mi trabajo actual, mi experiencia con SQL era


totalmente nula. Sin embargo, tenía que empezar a usar funciones
complicadas, vistas, procedimientos almacenados, y selects que
en el momento me parecían imposibles.
Una de las cosas más importantes que aprendí fue a hacer los
JOINS. Y de esos tiempos me acuerdo del siguiente
artículo: JOINS para seres humanos. Ahí están los diagramas de
conjuntos para cada tipo de Join y es recomendable leer el post
para ver algo más.

En mi caso voy a escribir algo netamente práctico para tratar de


sacarle la vuelta. Una vez que se entiende, resulta muy práctico, y
se usa mucho. Personalmente el que más uso es el INNER JOIN
pero dependiendo de la situación, hay que analizar cuál JOIN viene
mejor. Recomiendo visitar la página de WikiPedia que está
bastante concreta, y después armarse una base de datos y
empezar a probarlo.

EJEMPLO: Tenemos una base de datos con una tabla


“Estudiantes”, que guarda el Id y Nombre, “Materias” que guarda lo
mismo, y una que relaciona las dos mediantes sus respectivos ID:
INNER JOIN: Queremos un SELECT que nos devuelva los nombres
de cada estudiante que está estudiando una materia, y qué
materias está estudiando.

SELECT E.Nombre, M.Nombre FROM Estudiantes AS E


INNER JOIN Estudiantes_Materias AS EM
ON EM.IdEstudiante = E.Id
INNER JOIN Materias AS M
ON M.Id = EM.IdMateria
ORDER BY E.Nombre

Es importante notar que Transact SQL (la versión de SQL que usa
MS SQL SERVER) tiene la posibilidad de hacer este tipo de
consultas de forma más “sencilla” a simple vista con algo como:

SELECT E.Nombre, M.Nombre


FROM Estudiantes AS E, Materias AS M, Estudiantes_Materias AS EM
WHERE E.Id = EM.IdEstudiante AND M.Id = EM.IdMateria

Sin embargo, es más recomendable hacerlo a la manera “ANSI”


que es la más estándar, así si cambiáramos de motor de base de
datos a Oracle, Postgre o MySQL tendríamos menos dificultad con
la sintaxis.

OUTER JOIN: Ahora queremos saber lo mismo, pero además


mostrar los estudiantes que no están estudiando ninguna materia:

SELECT E.Nombre, EM.IdMateria


FROM Estudiantes_Materias AS EM
FULL OUTER JOIN Estudiantes AS E
ON E.Id = EM.IdEstudiante

Con eso ya se puede tener una idea de qué significan los joins. Por
experiencia puedo decir que se llega a entender bien sólo con la
práctica.

Por más información:


 Join – Wikipedia
 QuarkBlog – Joins para seres humanos.

 SQL - JOIN Internos o INNER JOIN


 La consulta JOIN en general nos permite consultar 2 o mas tablas. Dichas
tablas estarán relacionadas por alguna forma, generalmente por alguna de sus
columnas. La sentencia INNER JOIN (JOIN INTERNO) es la sentencia JOIN por
defecto y consiste en combinar cada fila de una tabla con cada fila de otra tabla,
seleccionando solo las filas que cumplan con la condición.

Un ejemplo gráfico sera el siguiente:



 SQL - Sintaxis del INNER JOIN


 La sentencia INNER JOIN es muy sencilla:


 SELECT * FROM tabla_1 INNER JOIN tabla_2 ON tabla_1.columna_1 =
tabla_2.columna_1

 Básicamente estamos efectuando una consulta cruzada, diciendo tráeme todos los
resultados de la tabla1 y tabla2 donde la columna1 de la tabla 1 sea igual a la columna
1 de la tabla 2.


 Ejemplo:


Tabla Usuarios

Tabla Facturas

 La consulta para traer todos los resultados de ambas donde el usuario es 1:

 SELECT * FROM Facturas INNER JOIN Usuarios ON FACTURAS.ID_USUARIO =
USUARIOS.ID_USUARIO WHERE USUARIOS.ID_USUARIO =1

Links Relacionados:
SQL - Comando DROP- Sintaxis DROP
SQL - FOREIGN KEY LLAVE SECUNDARIA - Sintaxis de FOREIGN KEY
SQL - AUTO INCREMENT - Sintaxis AUTO INCREMENT
http://java-white-box.blogspot.com/2014/09/sql-join-internos-o-inner-join-sintaxis.html

AS: Se encarga de asignar el nombre que deseamos a la columna deseada, podemos hacer que la
columna devuelta por la consulta en lugar de llamarse apellido se llame empleado, o en lugar de
llamarse id se llame id estudiante.

Potrebbero piacerti anche