Capitulos de este wiki
  1. 1 INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas

INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas - INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas

1 - INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas

Tutorial creado por joangarnet. Extraido de: http://www.joangarnet.com/blog/?p=38
15 de Septiembre de 2006

Desde MySQL es posible realizar una consulta que devuelva los valores de una tabla que está relacionada con otras de una sola vez.
Por ejemplo, tenemos una tabla principal bien normalizada, con muchos campos que estan relacionados mediante un id con otras tablas que contienen los valores reales.
Lo que necesitamos hacer es convertir esa tabla ppal en otra en que los IDs se conviertan en dichos valores reales, y para ello utilizaremos JOINs:
Hay varios tipos de JOIN:

- Cross-Join
- Equi-Join o Inner Join
- Left Join

En este ejemplo se verá la utilización de lo que se llama un Equi-Join o Inner Join.
Para ver el funcionamiento creamos una base de datos de ejemplo:

PLAIN TEXT
MySQL:
  1. CREATE DATABASE contactos;
  2. USE contactos;
  3.  
  4. CREATE TABLE clientes   (
  5.             id INT(3),
  6.             nombre VARCHAR(100),
  7.             tipo_cliente INT(2),
  8.             localidad INT(3)
  9.             );
  10.  
  11. CREATE TABLE tipos_cliente
  12.             (
  13.             id INT(2),
  14.             tipo VARCHAR(255)
  15.             );
  16.  
  17. CREATE TABLE localidades
  18.             (
  19.             id INT(3),
  20.             nombre_localidad VARCHAR(255)
  21.             );
  22.  
  23. # rellenamos la tabla "clientes"
  24. INSERT INTO clientes VALUES ( 1, 'Marcos Gonzalez', 1, 1 );
  25. INSERT INTO clientes VALUES ( 2, 'Ingeniería y Mezclas', 3, 2 );
  26. INSERT INTO clientes VALUES ( 3, 'Daniel Aguilar', 1, 3 );
  27. INSERT INTO clientes VALUES ( 4, 'Abel Molina', 2, 3 );
  28.  
  29. #rellenamos la tabla tipos_cliente
  30. INSERT INTO tipos_cliente VALUES ( 1, 'Desarrollador' );
  31. INSERT INTO tipos_cliente VALUES ( 2, 'Diseñador' );
  32. INSERT INTO tipos_cliente VALUES ( 3, 'Otros' );
  33.  
  34. # rellenamos la tabla localidades
  35. INSERT INTO localidades VALUES ( 1, 'Oviedo' );
  36. INSERT INTO localidades VALUES ( 2, 'Girona' );
  37. INSERT INTO localidades VALUES ( 3, 'Barcelona' );

Y ahora la consulta:
Lo que queremos hacer es recoger todos los valores de la tabla clientes pero recogiendo el valor real de los Id's, que está situado en otras tablas relacionadas.

PLAIN TEXT
MySQL:
  1. SELECT
  2.     clientes.nombre AS nombre_cliente,
  3.     localidades.nombre_localidad AS localidad_cliente,
  4.     tipos_cliente.tipo AS tipo_cliente
  5. FROM clientes,
  6.     localidades,
  7.     tipos_cliente
  8. WHERE clientes.localidad=localidades.id
  9.     AND clientes.tipo_cliente=tipos_cliente.id;

Lo que hemos hecho aquí es, en la clausula SELECT seleccionar los campos de los que queremos sacar información y darles un nombre de alias con AS. El alias nos sirve para utilizar nombres que nos aclaren más la función de la tabla en cuestión, pero es totalmente opcional en este caso.
Seguidamente, en la clausula FROM decimos de qué tablas sacamos la información del SELECT, y para acabar debemos aclarar las condiciones que se tienen que cumplir para que los valores sean los correctos en cada columna.
En este caso los id's de la tabla ppal (clientes) deben coincidir con los id's de las tablas relacionadas.
Si ejecutamos esta consulta debemos obtener el siguiente valor:

nombre_cliente localidad_cliente tipo_cliente
Marcos Gonzalez Oviedo Desarrollador
Daniel Aguilar Barcelona Desarrollador
Abel Molina Barcelona Diseñador
Ingeniería y Mezclas Girona Otros
Enlaces relacionados:
* JOIN Syntax

1 opinión

Mysql manual.

Mysql es buenazo,ey leido sobre este temas es super, asi que quiero aprender mas conlos cursos de internet gratis.

Tutoriales relacionados con 'INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas'

Desde MySQL es posible realizar una consulta que devuelva los valores de una tabla que... Más »
Desde MySQL es posible realizar una consulta que devuelva los valores de una tabla que... Más »

Autor y licencia de 'INNER JOIN o EQUI-JOIN : Consultas MySQL a multiples tablas relacionadas'


Tutorial de joangarnet. Extraido de: http://www.joangarnet.com/blog/?p=38 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.