LEFT JOIN: Consulta Mysql para Unir Tablas Relacionadas


La consulta Mysql LEFT JOIN devuelve todas las filas de la tabla citada en la cláusula “FROM” y sus filas vinculadas en la tabla citada dentro de la cláusula “LEFT JOIN” (incluyendo aquellas filas que no tengan filas vinculadas).

¡Vayamos a la práctica! Cuando analizamos el ejemplo de INNER JOIN en Mysql teníamos el siguiente esquema de tablas:

Al efectuar un INNER JOIN entre la tabla Empresas y la tabla Servicios, observábamos que la empresa Youtube.com (Id=3) quedaba fuera del listado resultado puesto que no existe ninguna fila en la tabla Servicios con IdEmpresa=3.

En el caso del ejemplo, LEFT JOIN nos sirve para listar TODAS las empresas y sus servicios correspondientes. Las empresas que no tienen ningún servicio también formarán parte del resultado. (en el caso de INNER JOIN, las empresas que no tienen servicio quedaban afuera).

Revisemos cómo quedaría el código fuente PHP de nuestra consulta Mysql LEFT JOIN:


Necesitas hosting para un nuevo sitio? Buscas mejorar tu servicio actual?
Yo utilizo y te recomiendo InterServer, te brindan espacio en disco ilimitado y múltiples dominios por cuenta a sólo $5 usd mensual. >> Más detalles

$consulta_mysql="select Empresas.Nombre,Servicios.Servicio                    from Empresas                        left join Servicios on Empresas.Id=Servicios.IdEmpresa";$resultado_consulta_mysql=mysql_query($consulta_mysql,$conexion);

El resultado sería:


Necesitas hosting para un nuevo sitio? Buscas mejorar tu servicio actual?
Yo utilizo y te recomiendo InterServer, te brindan espacio en disco ilimitado y múltiples dominios por cuenta a sólo $5 usd mensual. >> Más detalles

Notas: Previamente ya hemos aprendido en BlogdePHP.com cómo leer e imprimir en pantalla los resultados de una consulta Mysql

Siguiendo el ejemplo…, ¿cómo podríamos listar todos los servicios y las empresas que lo brindan, incluyendo los servicios que no son brindados por ninguna empresa?

Lo hacemos a través de la consulta Mysql RIGHT JOIN que funciona similar a LEFT JOIN pero en viceversa. Es decir, se listan todas las filas de la tabla Mysql citada en la cláusula “RIGHT JOIN”, incluyendo aquellas que no tienen ninguna fila vinculada en la tabla citada dentro de la cláusula “FROM”.

La consulta Mysql quedaría:

$consulta_mysql="select Empresas.Nombre,Servicios.Servicio                    from Empresas                        right join Servicios on Empresas.Id=Servicios.IdEmpresa";$resultado_consulta_mysql=mysql_query($consulta_mysql,$conexion);

El resultado sería:

En la 3er clase del Curso de PHP y Mysql a Distancia hablamos exclusivamente sobre base de datos Mysql.

El Curso a distancia es una nueva opción para aprender programación PHP, y/o mejorar tu nivel, desde la comodidad de tu casa y con ayuda de un profesor y a precio accesible. Puedes considerarlo si te gusta ver y escuchar al profesor (como en la Universidad) y teniendo la posibilidad de hacer preguntas y respuestas en VIVO. Nos juntamos Martes y Jueves de 19 a 21 hs, ¡sumate a aprender con nosotros!


Nota del autor: Busco programadores y diseñadores freelance para colaborarme con proyectos. Mostrame tus trabajos desarrollados, escribime!


Te agradaría derivar tu proyecto a un programador con años de experiencia?

Ing. Diego Angelini.
Autor de BlogdePHP.com
Programador Web Freelance






Porfolio de proyectos
  • ersolan

    Amigo de verdad eres un maestro pues sabes explicar de manera que se entiende lo que se desea aprender.

  • Marquez

    EXCELENTE ejemplo, muy buena explicacion.

  • Ingeniero Rafael Martinez Murg

    Como le hago si deseo una consulta de 3 tablas sin repetir campos?

  • Move TheVictor

    Muy buen ejemplo, me gustaría que hiciera un ejemplo utilizando 3 tablas con procedimientos almacenados sería de mucha utilidad..