Saltar al contenido
SQL con Python

Unión de tablas: Cómo combinar datos de dos o más tablas utilizando instrucciones SQL.

Introducción

La unión de tablas es una técnica utilizada en SQL para combinar datos de dos o más tablas en una única consulta. Esto permite obtener información más completa y precisa acerca de los datos almacenados en diferentes tablas de una base de datos.

Para unir dos tablas, es necesario que tengan una columna en común que pueda servir como clave para la unión. La unión de tablas se realiza mediante la instrucción SQL JOIN. Hay diferentes tipos de join, como INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL OUTER JOIN, que permiten combinar los datos de diferentes maneras.

En general, la unión de tablas es una técnica muy útil para trabajar con grandes bases de datos y obtener información relevante de forma más eficiente. Es importante conocer los fundamentos de la unión de tablas en SQL si se trabaja con bases de datos y se quiere hacer consultas más complejas y eficientes.

Resumen

La unión de tablas es una operación muy común en SQL que nos permite combinar los datos de dos o más tablas en una sola. Esta unión puede ser realizada de varias formas, pero la más utilizada es la unión por columna o unión por clave.

La unión por columna se lleva a cabo cuando las tablas tienen una o más columnas en común, es decir, columnas que tienen el mismo nombre y tipo de datos. Si queremos unir dos tablas por una columna en común, la sintaxis básica sería la siguiente:

        
            SELECT * FROM tabla1 JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;
        
    

En este ejemplo, se seleccionan todas las columnas (*) de la tabla1 y tabla2, y se une la tabla1 con la tabla2 mediante la columna_comun que ambas tienen en común. La cláusula ON indica que se unen las filas donde los valores de la columna_comun son iguales en ambas tablas.

La unión por clave se realiza cuando las tablas tienen una columna, o un conjunto de columnas, que se utilizan como clave primaria y secundaria, y que permiten unir las dos tablas de manera más precisa. Por lo general, las tablas que van a ser unidas de esta manera deben tener una relación establecida previamente, es decir, la clave primaria de una tabla debe ser igual a la clave secundaria de la otra.

La sintaxis para la unión por clave es muy similar a la unión por columna, pero se utiliza la cláusula JOIN con la palabra INNER para indicar que sólo se seleccionan las filas donde haya una correspondencia entre las claves primarias y secundarias de ambas tablas:

        
            SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.clave_primaria = tabla2.clave_secundaria;
        
    

En este ejemplo, se unen las filas donde la clave_primaria de la tabla1 sea igual a la clave_secundaria de la tabla2.

La unión de tablas puede ser muy útil para obtener información adicional o complementaria de diferentes fuentes de datos. Es recomendable comprender bien las claves primarias y secundarias en las tablas para poder hacer uniones precisas y evitar datos duplicados o inconsistentes.

Aplicación teórica

Supongamos que tienes dos tablas, una llamada "Pedidos" y otra llamada "Clientes". La tabla "Pedidos" contiene información sobre los pedidos realizados, como el número de pedido, la fecha, el cliente que realizó el pedido y el costo del pedido. La tabla "Clientes" contiene información sobre los clientes, como su nombre, su dirección, su número de teléfono y su dirección de correo electrónico. Para unir estas dos tablas y obtener una lista de todos los pedidos realizados junto con la información del cliente correspondiente, puedes utilizar la siguiente instrucción SQL:

        
            SELECT Pedidos.NumeroPedido, Pedidos.Fecha, Pedidos.Costo, Clientes.Nombre, Clientes.Direccion, Clientes.Telefono, Clientes.CorreoElectronico FROM Pedidos INNER JOIN Clientes ON Pedidos.ClienteID = Clientes.ClienteID;
        
    

Explicación:

  • La cláusula "SELECT" selecciona los datos que deseamos mostrar en la consulta.
  • La cláusula "FROM" especifica la tabla principal desde donde se extraerán los datos (en este caso, "Pedidos").
  • La cláusula "INNER JOIN" indica que vamos a combinar los datos de dos tablas (en este caso, "Pedidos" y "Clientes"). También establece la condición para la unión, que en este caso es igualar la columna "ClienteID" de ambas tablas. Esta condición significa que solo se mostrarán los pedidos realizados por los clientes que se encuentran en la tabla "Clientes".
  • Por último, la cláusula "SELECT" indica qué columnas queremos mostrar en nuestra consulta, indicando tanto la tabla como el nombre de la columna. En este caso, se mostrarán las columnas "NumeroPedido", "Fecha" y "Costo" de la tabla "Pedidos", y las columnas "Nombre", "Direccion", "Telefono" y "CorreoElectronico" de la tabla "Clientes". Con esta consulta, obtendremos una tabla que contenga la información de todos los pedidos realizados, junto con la información del cliente que realizó ese pedido.

 

Aplicación práctica

Un ejemplo práctico de cómo puedes hacer una unión de tablas en Python utilizando la librería pandas y la función merge:

        
import pandas as pd

# Dataframe 1: ventas por producto
df1 = pd.DataFrame({'producto': ['A', 'B', 'C', 'D', 'E'], 'ventas': [100, 200, 150, 300, 50]})

# Dataframe 2: ventas por fecha
df2 = pd.DataFrame({'fecha': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'], 'ventas': [50, 100, 75, 200, 25]})

# Combinar dataframes por la columna de ventas (columna en común entre ambas tablas)
df3 = pd.merge(df1, df2, on='ventas')

# Eliminar la columna de ventas (no es necesaria después de unir las tablas)
df3 = df3.drop(columns='ventas')

print(df3)
        
    

El resultado será:

        
  producto       fecha
0        A  2021-01-05
1        B  2021-01-04
2        C  2021-01-02
3        D  2021-01-03
4        E  2021-01-01
        
    

En la tabla resultante, se muestran las ventas por producto y fecha. La función merge compara las dos tablas utilizando la columna de ventas como referencia, y agrega los datos de la tabla df2 a la tabla df1 en base a esa columna. Luego, se elimina la columna de ventas porque no es necesaria en la tabla combinada.