Puede combinar filas de dos o más tablas, en función de una columna relacionada entre ellas, mediante el uso de una instrucción JOIN.
Considere que tiene una tabla de «usuarios» y una tabla de «productos»:
{ id: 1, nombre: 'Agus', fav: 154}, { id: 2, nombre: 'Javi', fav: 154}, { id: 3, nombre: 'Ana', fav: }, { id: 4, nombre: 'Ramón', fav:}
Productos
{ id: 200, nombre: 'Vino tinto' }, { id: 201, nombre: 'Vino Blanco' }, { id: 202, nombre: 'Vino rosado' }
Estas dos tablas se pueden combinar utilizando el campo de favoritos de los usuarios y el campo de identificación de los productos.
Ejemplo
Únase a los usuarios y productos para ver el nombre del producto favorito de los usuarios:
import mysql.connector mydb = mysql.connector.connect( host= "localhost", user= "tu usuario", passwd=" "tu contraseña"", database= "tu bbdd" ) mycursor = mydb.cursor() sql = "SELECT \ clientes.nombre AS nombre_cliente, \ producto.nombre AS producto_consumido \ FROM clientes \ INNER JOIN producto ON clientes.fav = producto.id" mycursor.execute(sql) myresult = mycursor.fetchall() for x in myresult: print(x)
Nota: Puedes usar JOIN en lugar de INNER JOIN. Ambos te darán el mismo resultado.
LEFT JOIN
En el ejemplo anterior, Ramón y Ana se excluyeron del resultado, porque INNER JOIN solo muestra los registros donde hay una coincidencia.
Si desea mostrar a todos los usuarios, incluso si no tienen un producto favorito, use la declaración LEFT JOIN:
Ejemplo
Selecciona todos los clientes y su producto favorito:
sql = "SELECT \ cliente.nombre AS nombre_cliente, \ producto.name AS Producto_consumido \ FROM clientes \ LEFT JOIN producto ON cliente.fav = producto.id"
RIGHT JOIN
Si desea devolver todos los productos, y los usuarios que los tienen como favoritos, incluso si ningún usuario los tiene como favoritos, use la declaración RIGHT JOIN:
Ejemplo
Seleccione todos los productos y los usuarios que los tengan como favoritos:
sql = "SELECT \ clientes.nombre AS nombre_cliente, \ producto.nombre AS producto_consumido \ FROM clientes \ RIGHT JOIN producto ON clientes.fav = producto.id"