Podemos recuperar datos de más de una tabla usando la instrucción JOIN. SQL Server tiene 4 tipos de articulaciones:
- ÚNETE INNER / unión simple
- UNIÓN EXTERIOR IZQUIERDA / UNIÓN IZQUIERDA
- CANCIÓN FUERA / DERECHA DERECHA
- TOTAL SOLAMENTE
UNIR INTERNAMENTE
Este tipo de JOIN devuelve filas de cada tabla en la que la condición de unión es verdadera. Asume la siguiente sintaxis:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Usaremos las siguientes dos tablas para mostrar esto:
Mesa de estudiantes:
Tabla de tarifas:
El siguiente comando muestra INNER JOIN:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
El pedido envía lo siguiente:
Podemos decirle a los estudiantes que pagaron su tarifa. Usamos la columna con valores iguales en ambas tablas, que es la columna de entrada.
IZQUIERDA COMBINACIÓN EXTERNA
Este tipo de unión devolverá todas las filas de la tabla de la izquierda más los registros de la tabla de la derecha con valores coincidentes. Por ejemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
El código envía lo siguiente:
Los NULL reemplazan los registros sin valores coincidentes en las columnas respectivas.
DERECHO HACIA FUERA
Este tipo de unión devuelve todas las filas de la tabla de la derecha y solo aquellas con valores coincidentes en la tabla de la izquierda. Por ejemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
La declaración envía lo siguiente:
El motivo del resultado anterior es que todas las filas de la tabla de tarifas están disponibles en la tabla de estudiantes cuando se comparan en la columna de entrada.
TOTAL SOLAMENTE
Este tipo de unión devuelve todas las filas de ambas tablas con valores NULL donde la condición JOIN no es verdadera. Por ejemplo:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
El código devuelve el siguiente resultado: