Unir 3 tablas en MySQL

Preet Sanghavi 28 marzo 2022
Unir 3 tablas en MySQL

En este tutorial, aprenderemos cómo unir tres tablas en MySQL.

Es posible que las empresas y organizaciones tengan que visualizar tres tablas simultáneamente en función de una columna coincidente particular común a las tres tablas. Esta operación está permitida en MySQL con la ayuda de uniones.

Podemos obtener columnas según nuestros requisitos de diferentes tablas y unir las tablas en función de una columna en particular que sea común para todos. Por ejemplo, tenemos tres tablas llamadas table_1, table_2 y table_3.

La primera tabla tiene el nombre, la segunda tiene el apellido y la última tiene la dirección. Cada uno tiene una identificación principal para fusionar o visualizar estas tablas como una usando la identificación principal común de MySQL.

Vamos a entender cómo funciona este método. Pero antes de comenzar, debemos crear tres conjuntos de datos ficticios mediante la creación de una tabla, student_details, junto con algunas filas.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

Para ver las entradas en los datos, usamos el siguiente código.

SELECT * FROM student_details;

Producción :

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

A continuación, necesitamos otra tabla llamada student_marks que contenga las notas de cada alumno correspondientes al stu_id. Podemos hacer una tabla de este tipo usando la siguiente consulta.

-- create the table student_details
CREATE TABLE student_marks(
  stu_id int,
  stu_marks int
);
-- insert rows to the table student_details
INSERT INTO student_marks(stu_id,stu_marks) 
 VALUES(1,10),
 (2,20),
 (3,30),
 (4,7),
 (5,9),
 (6,35),
 (7,15);

Podemos visualizar esta tabla usando la siguiente consulta.

SELECT * from student_marks;

Producción :

stu_id  stu_marks
1		10
2		20
3		30
4		7
5		9
6		35
7		15

Por último, creemos una tercera tabla llamada student_email. Esta tabla tendría las columnas stu_id y stu_email. La columna stu_id sería común a las tres tablas, mientras que la columna stu_email representaría la dirección de correo electrónico del estudiante que se está considerando.

Podemos crear la tercera tabla con la ayuda de la siguiente consulta.

-- CREATE TABLE student_email
CREATE TABLE student_email(
  stu_id int,
  stu_email varchar(255) DEFAULT NULL
);

-- insert rows to the table student_email
INSERT INTO student_email(stu_id,stu_email) 
 VALUES(1,"abc@d.in"),
 (2,"SEAabc@d.in"),
 (3,"DEabc@d.in"),
 (4,"KARTabc@d.in"),
 (5,"MARIOabc@d.in"),
 (6,"SPETERabc@d.in"),
 (7,"DAVIDabc@d.in");

Podemos visualizar la tabla student_email creada anteriormente con la siguiente consulta.

SELECT * from student_email;

Producción :

stu_id	stu_email
1		abc@d.in
2		SEAabc@d.in
3		DEabc@d.in
4		KARTabc@d.in
5		MARIOabc@d.in
6		SPETERabc@d.in
7		DAVIDabc@d.in

Tratemos de obtener tres valores, particularmente el nombre del estudiante, las calificaciones y la dirección de correo electrónico, de las tres tablas creadas anteriormente con la ayuda de la columna común stu_id.

Unir 3 tablas en MySQL

Para fusionar nuestras tres tablas, podemos usar la columna común y obtener diferentes columnas de tablas separadas con la ayuda de la siguiente consulta.

select a.stu_firstName as "Name", b.stu_email as "Email", c.stu_marks as "Marks"
from student_details a, student_email b, student_marks c
where a.stu_id = b.stu_id and b.stu_id = c.stu_id 

Como se ve en la consulta anterior, estamos uniendo tres tablas en función de la identidad común del estudiante. La salida del código anterior es la siguiente.

Name	Email			Marks
Preet	abc@d.in		10
Rich	SEAabc@d.in		20
Veron	DEabc@d.in		30
Geo		KARTabc@d.in	7
Hash	MARIOabc@d.in	9
Sachin	SPETERabc@d.in	35
David	DAVIDabc@d.in	15

Nota: En el bloque de salida, tenemos el alias Name, Email y Marks con la palabra clave AS en MySQL para aumentar la legibilidad del programa.

Por lo tanto, con la ayuda de las cláusulas WHERE y ON, podemos unir de manera eficiente tres tablas diferentes y visualizar sus columnas como una sola basada en una condición común en MySQL.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Artículo relacionado - MySQL Join