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:
SELECT [campo] FROM [tabla1]INNER JOIN [tabla2]ON tabla1.campo = tabla2.campo
SELECT nombre, perfil.nombre AS perfilNombre,noticias.detalle AS detalleFROM usuariosINNER JOIN perfil, noticiasON usuarios.id=noticias.user_id
SELECT nombre, perfil.nombre AS perfilNombre,noticias.detalle AS detalleFROM usuariosINNER JOIN perfil, noticiasWHERE usuarios.id=noticias.user_idAND perfil.user_id=usuarios.id
LEFT JOIN
Retorna los registros la tabla1(junto al FROM) y los que coinciden con la tabla2,tabla3,etc...
SELECT [campo] FROM [tabla1]LEFT JOIN tabla2ON tabla1.campo = tabla2.campo
SELECT u.nombre,p.edad,p.apellidosFROM usuarios AS uLEFT JOIN perfil AS pON 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.
SELECT nombre, p.edad AS edadFROM usuariosRIGHT JOIN perfilON 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.
SELECT nombre, edadFROM usuariosWHERE nombre = "Juan"UNIONSELECT nombre,edadFROM usuariosWHERE nombre = "Manolo"
FULL OUTER JOIN (Cláusula no disponible en MySQL)
Retorna todos los registros de tabla1 y tabla2
SELECT * FROM [tabla1]LEFT JOIN [tabla2] ON [tabla1.campo]=[tabla2.campo]UNIONSELECT * FROM [tabla1]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
ID nombre-------------------1 Juan2 Javier3 Rubén4 Iván
Tabla destinatarios
ID nombre-------------------1 Rubén2 Iván3 Mónica4 Vanesa
SELECT * FROM usuariosINNER JOIN destinatariosON usuarios.nombre = destinatarios.nombre;
usuarios destinatarios(campo nombre) (campo nombre)-----------------------------------------Rubén RubénIván Iván
SELECT * FROM usuariosLEFT JOIN destinatariosON usuarios.nombre = destinatarios.nombre
usuarios destinatarios(campo nombre) (campo nombre)--------------------------------Juan nullJavier nullRubén RubénIván Iván
SELECT * FROM usuariosRIGHT JOIN destinatariosON usuarios.nombre = destinatarios.nombre;
usuarios destinatarios(campo nombre) (campo nombre)-------------------------------Rubén RubénIván Ivánnull MónicaJavier Vanesa
Para poder comentar es necesario iniciar sesión