JOIN en MySQL

Sentencias JOIN en MySQL

Las funciones JOIN son cláusulas que permiten obtener datos de dos o más tablas relacionales al mismo tiempo mediante los comandos SELECT, DELETE, UPDATE. E

INNER JOIN

Retorna los registros de las tablas que coinciden:

  1. SELECT [campo] FROM [tabla1]
  2. INNER JOIN [tabla2]
  3. ON tabla1.campo = tabla2.campo
  1. SELECT nombre, perfil.nombre AS perfilNombre,
  2. noticias.detalle AS detalle
  3. FROM usuarios
  4. INNER JOIN perfil, noticias
  5. ON usuarios.id=noticias.user_id
  1. SELECT nombre, perfil.nombre AS perfilNombre,
  2. noticias.detalle AS detalle
  3. FROM usuarios
  4. INNER JOIN perfil, noticias
  5. WHERE usuarios.id=noticias.user_id
  6. AND perfil.user_id=usuarios.id

LEFT JOIN

Retorna los registros la tabla1(junto al FROM) y los que coinciden con la tabla2,tabla3,etc...

  1. SELECT [campo] FROM [tabla1]
  2. LEFT JOIN tabla2
  3. ON tabla1.campo = tabla2.campo
  1. SELECT u.nombre,p.edad,p.apellidos
  2. FROM usuarios AS u
  3. LEFT JOIN perfil AS p
  4. ON u.id=p.user_id

RIGHT JOIN

Retorna los registros de la tabla2 y los que coinciden con la tabla1(junto al FROM). Si en algún campo no coincide ese campo se convierte a NULL.

  1. SELECT nombre, p.edad AS edad
  2. FROM usuarios
  3. RIGHT JOIN perfil
  4. ON usuarios.id = perfil.user_id

Nota: Si añadimos otra condición(AND) debemos sustituir ON por WHERE

UNION

Retorna la combinación de dos o más SELECT. Todos los SELECT deben tener el mismo número de campos, del mismo tipo y en el mismo orden.

  1. SELECT nombre, edad
  2. FROM usuarios
  3. WHERE nombre = "Juan"
  4. UNION
  5. SELECT nombre,edad
  6. FROM usuarios
  7. WHERE nombre = "Manolo"

FULL OUTER JOIN (Cláusula no disponible en MySQL)

Retorna todos los registros de tabla1 y tabla2

  1. SELECT * FROM [tabla1]
  2. LEFT JOIN [tabla2] ON [tabla1.campo]=[tabla2.campo]
  3. UNION
  4. SELECT * FROM [tabla1]
  5. RIGHT JOIN [tabla2] ON [tabla1.campo] = [tabla2.campo]

A continuación un ejemplo básico más práctico con dos tablas para entender mejor la diferencia.

Tabla usuarios

  1. ID nombre
  2. -------------------
  3. 1 Juan
  4. 2 Javier
  5. 3 Rubén
  6. 4 Iván

Tabla destinatarios

  1. ID nombre
  2. -------------------
  3. 1 Rubén
  4. 2 Iván
  5. 3 Mónica
  6. 4 Vanesa
  • INNER JOIN 
  1. SELECT * FROM usuarios
  2. INNER JOIN destinatarios
  3. ON usuarios.nombre = destinatarios.nombre;
  • El resultado serían los valores en comunes entre las dos tablas
  1. usuarios destinatarios
  2. (campo nombre) (campo nombre)
  3. -----------------------------------------
  4. Rubén Rubén
  5. Iván Iván
  • LEFT JOIN 
  1. SELECT * FROM usuarios
  2. LEFT JOIN destinatarios
  3. ON usuarios.nombre = destinatarios.nombre
  • El resultado sería todos los valores de la tabla usuarios y los valores comunes de la tabla destinatarios.
  1. usuarios destinatarios
  2. (campo nombre) (campo nombre)
  3. --------------------------------
  4. Juan null
  5. Javier null
  6. Rubén Rubén
  7. Iván Iván
  • RIGHT JOIN 
  1. SELECT * FROM usuarios
  2. RIGHT JOIN destinatarios
  3. ON usuarios.nombre = destinatarios.nombre;
  • El resultado sería todos los valores de la tabla destinatarios y los valores en común de la tabla usuarios
  1. usuarios destinatarios
  2. (campo nombre) (campo nombre)
  3. -------------------------------
  4. Rubén Rubén
  5. Iván Iván
  6. null Mónica
  7. Javier Vanesa

 

Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso