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.