- 26/11/2013
- admin
- 0
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
¿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.