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.

¿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
"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.
No hay comentarios:
Publicar un comentario