InicioInfoProducto 2 por Roxana Lizbeth Lopez Chaparro

Producto 2 por Roxana Lizbeth Lopez Chaparro

Info10/26/2014
Roxana Lizbeth Lopez Chaparro



El objetivo del artículo es mostrar básicamente como funciona la sentencia SQL JOIN que a veces cuesta entenderla.

La sentencia SQL JOIN se utiliza para relacionar varias tablas, veremos algunos ejemplos básicos de distintos tipos de JOIN.

Primero creamos dos tablas para las pruebas

Tabla clientes:

mysql> select * from clientes;
+------+--------+----------+
| cid | nombre | telefono |
+------+--------+----------+
| 1 | jose | 111 |
| 2 | maria | 222 |
| 3 | manuel | 333 |
| 4 | jesus | 4444 |
+------+--------+----------+
4 rows in set (0.00 sec)
Tabla acciones:

mysql> select * from acciones;
+-----+-----+--------+----------+
| aid | cid | accion | cantidad |
+-----+-----+--------+----------+
| 1 | 2 | REDHAT | 10 |
| 2 | 4 | NOVELL | 20 |
| 3 | 4 | SUN | 30 |
| 4 | 5 | FORD | 100 |
+-----+-----+--------+----------+
4 rows in set (0.00 sec)
Observaciones de las tablas:

La primer tabla contiene clientes y teléfonos y la segunda la tenencia de acciones de los clientes.

Las dos tablas contienen el campo cid (client id) que es el que nos permitirá realizar coincidencias entre ambas tablas con join.

Hay clientes que no tienen acciones (jose) y otros que tienen más de una especie (jesus).

El ultimo registro de la tabla acciones (aid=4) tiene un cid 5, si miramos la tabla cliente, no exsite un cliente con cid=5.

JOIN

El JOIN nos permitirá obtener un listado de los campos que tienen coincidencias en ambas tablas.

Osea nos dara un lista de los clientes que tienen acciones.

mysql> select nombre, telefono, accion, cantidad from clientes join acciones on clientes.cid=acciones.cid;
+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| maria | 222 | REDHAT | 10 |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
+--------+----------+--------+----------+
3 rows in set (0.00 sec)
LEFT JOIN

La sentencia LEFT JOIN nos dará el resultado anterior mas los campos de la tabla clientes que no tienen coincidencias.

Osea un listado de todos los clientes, con sus tenencias y en el caso que no tengan acciones aparecerá NULL (como es el caso de jose).

mysql> select nombre, telefono, accion, cantidad from clientes left join acciones on clientes.cid=acciones.cid;
+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| jose | 111 | NULL | NULL |
| maria | 222 | REDHAT | 10 |
| manuel | 333 | NULL | NULL |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
+--------+----------+--------+----------+
5 rows in set (0.00 sec)
RIGTH JOIN

Aquí se listarán todas las tenencias de acciones, tengan o no cliente, las que no tengan cliente se verán como NULL (como es el caso de aid=4)

mysql> select nombre, telefono, accion, cantidad from clientes right join acciones on clientes.cid=acciones.cid;
+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| maria | 222 | REDHAT | 10 |
| jesus | 4444 | NOVELL | 20 |
| jesus | 4444 | SUN | 30 |
| NULL | NULL | FORD | 100 |
+--------+----------+--------+----------+
4 rows in set (0.00 sec)
INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN

INNER JOIN da el mismo resultado que JOIN (el primer ejemplo)

LEFT OUTER JOIN y RIGHT OUTER JOIN son iguales que LEFT JOIN y RIGHT JOIN respectivamente, se agrega OUTER luego de LEFT o RIGHT para tener compatibilidad con ODBC.




Producto 2 por Roxana Lizbeth Lopez Chaparro
Datos archivados del Taringa! original
0puntos
27visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

g
Usuario
Puntos0
Posts1
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.