91 007 17 22 - 09:30 a 14:00 y de 16:00 a 21:00 horas.info@asociacionaepi.es

INNER JOIN EN PHP: Consulta Mysql para Unir Tablas Relacionadas

Posteado en: blog Iniciado por

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.
image_pdfimage_print

Leave a Reply

Uso de cookies

Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de privacidad y cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies