Tabla cliente:
idcliente
|
nombre
|
telefono
|
idciudad
|
122 |
edwin vanegas |
5656565 |
001 |
123 |
karol claro |
7565696 |
001 |
124 |
brayan alvarez |
9656855 |
002 |
125 |
darwin salcedo |
4561237 |
003 |
-------------------------------------------------------------------------------------------------
Tabla compra:
idcompra
|
idcliente
|
fechacompra
|
005 |
123 |
2016-06-18 |
006 |
124 |
2016-05-16 |
Necesitamos realizar
una consulta que nos muestre el id de la compra la fecha de
la compra el nombre del cliente y el telefono del cliente
que realizo la compra
por
lo tanto necesitamos hacer una
unión de la tabla compra y
de la tabla cliente para
obtener dicha información.
Para
este ejemplo usaremos el INNER JOIN.
Pero primero explicare en que consiste el inner join, y para
explicarlo utilizaré el Diagrama de Venn:
Representemos en un circulo los atributos de la tabla compra
y en otro circulo los atributos de la tabla cliente:
compra:
cliente:
ahora realizamos una unión entre ambas tablas (círculos):
como podemos ver existe un atributo común entre ambas tablas
con la cual podemos realizar la unión (inner join)
ahora realizaremos una unión de los datos entre del
atributo idcliente de ambas tablas
datos de la tabla compra:
idcompra
|
idcliente
|
fechacompra
|
005 |
123 |
2016-06-18 |
006 |
124 |
2016-05-16 |
datos de la tabla cliente:
idcliente
|
nombre
|
telefono
|
idciudad
|
122 |
edwin vanegas |
5656565 |
001 |
123 |
karol claro |
7565696 |
001 |
124 |
brayan alvarez |
9656855 |
002 |
125 |
darwin salcedo |
4561237 |
003 |
El resultado de la unión es el siguiente:
como
podemos observar, la unión entre ambas tablas (con INNER
JOIN) es la intercepción
de los datos en común
de la tabla compra con
la tabla cliente.
ahora que hemos comprendido la manera en la que trabaja el INNER
JOIN procederemos a realizar la consulta SQL obteniendo
los datos que nos piden:
Realizar una consulta que nos muestre el id de la compra la
fecha de la compra el nombre del cliente y el telefono
del cliente que realizo la compra
y el resultado de la consulta es el siguiente:
SELECT compra.idcompra, compra.fecha, cliente.nombre,
cliente.telefono
FROM compra
INNER JOIN cliente ON compra.idcliente =
cliente.idcliente
como podemos observar, debemos especificar el nombre de la tabla
al atributo que deseamos obtener en la consulta para
evitar un error de ambigüedad:
compra.idcompra, compra.fecha, cliente.nombre,
cliente.telefono
Primero se especifica la tabla principal en este caso la tabla compra
y posteriormente escribimos INNER JOIN y seguido a esto
el nombre de la tabla, en este caso la tabla cliente.
FROM compra
INNER JOIN cliente
Después debemos especificar en la consulta con cuales campos
realizaremos el INNER JOIN (intercepción) como habiamos
analizado anteriormente serían los campos idcliente de las
dos tablas.
ON
compra.idcliente =
cliente.idcliente
PLUS:
podemos utilizar ALIAS en las consultas para simplificarla…
como ejemplo, la consulta anterior pdria ser de la siguiente manera:
SELECT co.idcompra,
co.fechacompra, cl.nombre, cl.telefono
FROM compra AS co
INNER JOIN cliente AS cl ON co.idcliente
= cl.idcliente
la
estructura de la consulta de un INNER JOIN es
la siguiente:
FROM
tabla1
INNER
JOIN tabla2
ON
tabla1.atributo_clave = tabla2.atributo_clave
-------------------------------------------------------------------------------
INNER
JOIN CON TRES O MÁS TABLAS:
FROM
tabla1
INNER
JOIN tabla2 ON tabla1.atributo_clave = tabla2.atributo_clave
INNER
JOIN tabla3
ON <tabla1.atributo_clave
ó tabla2.atributo_clave>
= tabla3.atributo_clave
INNER
JOIN tabla4
ON <tabla1.atributo_clave
ó tabla2.atributo_clave
ó tabla3.atributo_clave
> = tabla4.atributo_clave