INNER JOIN EN PHP: Consulta Mysql para Unir Tablas Relacionadas

Supongamos que tenemos una Tabla Mysql llamada “Empresas” y otra tabla “Servicios”. Y nos interesa mostrar en pantalla los servicios que brinda cada empresa, considerando que cada fila de la tabla “Servicios” tiene un valor asociado a la empresa que pertenece.
Consulta Mysql INNER JOIN para unir tablas relacionadas
¿Cómo listar todas las empresas y sus servicios correspondiente?

Lo hacemos utilizando INNER JOIN mediante la siguiente Consulta Mysql:

“select Empresas.Nombre,Servicios.Servicio from Empresas inner join Servicios on Servicios.IdEmpresa=Empresas.Id”;

Si quisiéramos listar todas las empresas, independientemente que tengan servicios o no, debemos utilizar la Consulta Mysql LEFT JOIN
¿Cómo se interpreta las tablas Mysql y consulta que hicimos arriba
Observemos que hay una columna llamada “IdEmpresa” en la tabla “Servicios” en donde se especifica el identificador de la empresa a la cual pertenece el servicio en cuestión. Por ejemplo, el servicio “Registro de dominios” tiene IdEmpresa=2, por lo tanto pertenece a la empresa Solo10.com.
Para comprender esta consulta mysql, te conviene leerla de la siguiente manera. Imaginemos que estamos conversando con el motor de base de datos mysql y le decimos:
  • Tráeme todas las filas de la tabla mysql llamada “Empresa” (ver línea número 2: “from Empresas”)
  • A cada fila, agrégale las columnas de la tabla mysql “Servicios” (únicamente las columnas de aquellas filas en donde IdEmpresa sea igual al Id de la empresa correspondiente a la fila actual en la tabla Empresas) (ver línea número 3: “inner join Servicios on Servicios.IdEmpresa=Empresas.Id”)
  • De todo ese conjunto de columnas, dame únicamente la columna “Nombre” de la tabla Mysql “Empresas” y “Servicio” de la tabla mysql “Servicios”. (ver línea número 1: select Empresas.Nombre,Servicios.Servicio)
Nuestro código fuente php quedaría completo de la siguiente manera:

// Conexión con la base de datos Mysql

 $conexion=mysql_connect('localhost','Tu-Usuario-Mysql','Contraseña-de-tu-Usuari-Mysql');
mysql_select_db('Nombre-de-tu-Base-de-datos-Mysql',$conexion);

// Consulta Mysql donde aplicamos INNER JOIN
$consulta_mysql="select Empresas.Nombre,Servicios.Servicio
from Empresas
inner join Servicios on Empresas.Id=Servicios.IdEmpresa";
$resultado_consulta_mysql=mysql_query($consulta_mysql,$conexion);

// Navegamos cada fila que devuelve la consulta mysql y la imprimimos en pantalla
while($fila=mysql_fetch_array($resultado_consulta_mysql)){
echo "El servicio ".$fila['Servicio']." es ofrecido por la empresa ".$fila['Nombre'];
}
Las últimas líneas del código, tal como hemos visto hace un tiempo, son para leer e imprimir en pantalla los resultados de una consulta Mysql.
Si te resultan complicadas estas extensas consultas mysql, seguramente podría interesarte comenzar a trabajar con el Framework PHP CodeIgniter. CodeIgniter permite hacer consultas mysql, por ejemplo el INNER JOIN, utilizando sentencias más compactas y comprensibles. Espero que este post te sea de utilidad y nos vemos pronto.
  • Share:

Deja un comentario

Your email address will not be published.

Enviar un mensaje

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies