Está en la página 1de 4

SQL INNER JOIN Keyword

The INNER JOIN keyword returns rows when there is at least one match in both tables.

SQL INNER JOIN Syntax


SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
PS: INNER JOIN is the same as JOIN.

SQL INNER JOIN Example


The "Persons" table:
P_Id
1
2
3

LastName
Hansen
Svendson
Pettersen

FirstName
Ola
Tove
Kari

Address
Timoteivn 10
Borgvn 23
Storgt 20

The "Orders" table:


O_Id
1
2
3
4
5

OrderNo
77895
44678
22456
24562
34764

P_Id
3
3
1
1
15

Now we want to list all the persons with any orders.


We use the following SELECT statement:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

City
Sandnes
Sandnes
Stavanger

The result-set will look like this:


LastName
Hansen
Hansen
Pettersen
Pettersen

FirstName
Ola
Ola
Kari
Kari

OrderNo
22456
24562
77895
44678

The INNER JOIN keyword returns rows when there is at least one match in both tables. If
there are rows in "Persons" that do not have matches in "Orders", those rows will NOT be
listed.
Tablas de ejemplo

Todas las explicaciones que estn a continuacin usan las siguientes dos tablas para ilustrar
el efecto de diferentes clases de uniones JOIN.
Tabla Empleado
Apellido

IDDepartamento

Andrade

31

Jordn

33

Steinberg

33

Rbinson

34

Zolano

34

Gaspar

36
Tabla Departamento

NombreDepartamento

IDDepartamento

Ventas

31

Ingeniera

33

Produccin

34

Mercadeo

35

La tabla Empleado contiene los apellidos de los empleados junto al nmero del
departamento al que pertenecen, mientras que la tabla Departamento contiene el nombre
de los departamentos de la empresa.
Existen empleados que tienen asignado un nmero de departamento que no se encuentra en
la tabla Departamento (Gaspar). Igualmente, existen departamentos a los cuales no
pertenece ningn empleado (Mercadeo). Esto servir para presentar algunos ejemplos ms
adelante.
Combinacin interna (INNER JOIN)

Con esta operacin se calcula el producto cruzado de todos los registros; as cada registro
en la tabla A es combinado con cada registro de la tabla B; pero slo permanecen aquellos
registros en la tabla combinada que satisfacen las condiciones que se especifiquen. Este es
el tipo de JOIN ms utilizado por lo que es considerado el tipo de combinacin
predeterminado.
SQL:2003 especifica dos formas diferentes para expresar estas combinaciones. La primera,
conocida como explcita usa la palabra JOIN, mientras que la segunda es implcita y usa ','
para separar las tablas a combinar en la sentencia FROM de la declaracin SELECT.
Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones
que cumplan lo que indica la sentencia WHERE.
Es necesario tener especial cuidado cuando se combinan columnas con valores nulos
NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando
se le agregan predicados tales como IS NULL o IS NOT NULL.
Como ejemplo, la siguiente consulta toma todos los registros de la tabla Empleado y
encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara
los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta
correspondencia entre algunas combinaciones, stas no se muestran; es decir que si el
nmero de departamento de un empleado no coincide con los nmeros de departamento de
la tabla Departamento, no se mostrar el empleado con su respectivo departamento en la
tabla resultante.
Las dos consultas siguientes son similares, y se realizan de manera explicita (A) e implcita
(B).
A. Ejemplo de la sentencia INNER JOIN explcita:
SELECT Campos
FROM
empleado
INNER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

B. Ejemplo de la sentencia INNER JOIN implcita:


SELECT Campos
FROM
empleado, departamento
WHERE empleado.IDDepartamento = departamento.IDDepartamento

Resultados:
Empleado. Empleado.IDdep departamento.Nombre departamento.IDD
Apellido
artamento
Departamento
epartamento
Zolano

34

Produccin

34

Jordn

33

Ingeniera

33

Rbinson

34

Produccin

34

Steinberg

33

Ingeniera

33

Andrade

31

Ventas

31

El empleado Gaspar y el departamento de Mercadeo no son presentados en los resultados


ya que ninguno de stos tiene registros correspondientes en la otra tabla. No existe un
departamento con nmero 36 ni existe un empleado con nmero de departamento 35.
A la combinacin que utiliza comparaciones dentro del predicado JOIN se le llama thetajoin.

También podría gustarte