Manejo de varias tablas
5. Manejo de varias tablas
Es habitual que se desee acceder a datos que se encuentran en más de una tabla y mostrar información combinada de todas ellas como resultado de una consulta. Para ello tendremos que hacer consultas de columnas de tablas diferentes.
Utilizaremos la tabla personas con una columna adicional llamada id_pais como se presenta a continuación:
nombre, apellido1,apellido2,edad,id_pais
Y una tabla país que se creará con la siguiente sintaxis:
CREATE TABLE pais ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, pais VARCHAR(100), )
Luego se insertarán los siguiente registros:
INSERT INTO pais (pais) VALUES ('URUGUAY'),('BRASIL'), ('ARGENTINA'), (‘PARAGUAY');
5.1 JOIN
La sentencia SQL JOIN se utiliza para relacionar varias tablas.
Nos permitirá obtener un listado de los campos que tienen coincidencias en ambas tablas:
Sintaxis:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Utilizaremos un JOIN para consultar las coincidencias de ambas tablas:
SELECT nombre, apellido1, pais FROM persona JOIN pais ON persona.id = pais.id
5.2 LEFT- JOIN
La sentencia LEFT JOIN nos dará el resultado anterior más los campos de la tabla de la izquierda del JOIN que no tienen coincidencias en la tabla de la derecha.
Sintaxis:
SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7 FROM Tabla1 T1 LEFT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
Utilizaremos un LEFT JOIN para consultar las coincidencias de ambas tablas:
SELECT nombre, apellido1, pais FROM persona LEFT JOIN pais ON persona.id = pais.id
5.3 RIGHT- JOIN
Idéntico funcionamiento que en el caso anterior pero con la tabla que se incluye en la consulta a la derecha del JOIN:
Sintaxis:
SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7 FROM Tabla1 T1 RIGHT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
Utilizaremos un RIGHT JOIN para consultar las coincidencias de ambas tablas:
SELECT nombre, apellido1, pais FROM persona RIGHT JOIN pais ON persona.id = pais.id
5.4 UNION y UNION ALL
Podemos combinar el resultado de varias sentencias con UNION o UNION ALL. UNION no nos muestra los resultados duplicados, pero UNION ALL si los muestra:
Sintaxis:
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
Ejemplo:
SELECT nombre FROM persona UNION SELECT pais FROM pais
Comentarios
Publicar un comentario