Lenguaje PHP

INNER JOIN PHP MySQL EJEMPLOS

¿Como unir dos tablas y realizar consultas SQL?

INNER JOIN PHP MySQL EJEMPLOS. En MySQL el INNER JOIN selecciona todas las filas de ambas tablas que participan a aparecer en el resultado si y sólo si ambas tablas cumplen las condiciones especificadas en la cláusula (ON. ÚNETE),  y INNER JOIN son equivalentes. En MYSQL, INNER JOIN se utiliza con una cláusula ON.

MySQL INNER JOIN

Al combinar y/o unir los registros de más de una tablas (pueden ser dos o más tablas). La cláusula ON se utiliza para que coincida con los registros en dos tablas o más a través de una columna con un valor en común entre las tablas que se van a unir, basándose en el valor de la columna id. El uso de INNER JOIN combina una unión interior permite filas de cualquiera de las tablas aparezcan en el resultado si y sólo si ambas tablas cumplen las condiciones especificadas en la cláusula ON, para obtener resultados relacionado entre sí en una consulta de php y mysql que necesitamos en nuestro proyectos web.

SELECT nombre_columna
FROM tableA
INNER JOIN tableB
ON tableA.nombre_columna=tableB.nombre_columna

El objetivo del INNER JOIN es relacionar tablas diferentes y obtener un resultado con columnas de dos tablas en nuestra base de datos.

Existen muchas maneras de relacionar tablas en MYSQL , empezaremos con ejemplos faciles de entender para no complicarnos con este tema que nos ayudara bastante en nuestros resultados de consultas:

TableA TableB
id id
Concepto Concepto
id_tableB

1. Método facil separado por comas

Después de la constante FROM enumeramos las tablas separadas por comas  como en el ejemplo y en el WHERE las relacionamos via id, valor que tendra que estar en las dos tablas que se intenta relacionar.

SELECT * FROM mitabla1, mitabla2 WHERE mitabla1.id_mitabla2=mitabla2.id

2. Método de la sentencia INNER JOIN

Aqui la consulta con INNER JOIN seria de esta manera.

SELECT tab1.id, tab1.nombre, tab2.nombre as nombre2 

FROM tabla1 tab1

INNER JOIN tabla2 tab2 ON (tab1.id_tabla2=tab2.id)
Inner join php mysql ejemplos
Inner join php
[pt_view id=”fc09d98ps2″]

EJEMPLO COMPLETO DE INNER JOIN

Siguiendo con nuestra explicación, de aquí en adelante mostraremos un ejercicio completo usando esta sentencia.

a) Base de Datos

Recursos necesarios para interactuar con este ejemplo

CREATE TABLE IF NOT EXISTS `animales` (
`id` int(11) NOT NULL,
  `IdEspecie` int(11) DEFAULT NULL,
  `Animales` varchar(200) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='Lista de Animales';

INSERT INTO `animales` (`id`, `IdEspecie`, `Animales`) VALUES
(1, 2, 'Iguana'),
(2, 1, 'Picaflor'),
(3, 2, 'Tortugas'),
(4, 1, 'Gaviotas'),
(5, 3, 'Gorila'),
(6, 1, 'Avetruz');


CREATE TABLE IF NOT EXISTS `especie` (
`id` int(11) NOT NULL,
  `Nombre` varchar(200) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='Especies de Animales';


INSERT INTO `especie` (`id`, `Nombre`) VALUES
(1, 'Aves'),
(2, 'Reptiles'),
(3, 'Mamiferos');

ALTER TABLE `animales`
 ADD PRIMARY KEY (`id`);

ALTER TABLE `especie`
 ADD PRIMARY KEY (`id`);

ALTER TABLE `animales`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;

ALTER TABLE `especie`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
Inner Join PHP ejemplos
Inner Join PHP ejemplos

b) Conexión con la base de datos

Para poder conectarnos con la base de datos usaremos el lenguaje PHP. A continuación, mostraremos un ejemplo.

<?php
// Configuración necesaria para acceder a la data base.
$hostname = "localhost";
$usuariodb = "root";
$passworddb = "root";
$dbname = "php_innerjoin";
	
// Generando la conexión con el servidor
$conectar = mysqli_connect($hostname, $usuariodb, $passworddb, $dbname);
?>

c) Consulta para ejecutar la sentencia

Esta sección es muy importante porque aquí realizaremos la consulta SQL que nos devolverá los registros deseados al concatenar dos tablas con datos relacionados.

<?php
//Selecionar  os itens da página
$sql = "SELECT especie.Nombre, animales.Animales FROM especie INNER JOIN animales ON especie.id=animales.IdEspecie where animales.IdEspecie=1";
$resultado = mysqli_query($conectar, $sql);
?>

d) Mostrar la información como resultado de la consulta

Para visualizar la información en el navegador nos apoyaremos en códigos HTML5, específicamente en tablas. Para lograr nuestro objetivo usaremos el ciclo WHILE o También podemos usar el ciclo FOR.

<table class="table">
  <thead class="thead-dark">
    <tr>
      <th class="text-center">Id</th>
      <th class="text-center">Especie</th>
      <th class="text-center">Animales</th>
    </tr>
  </thead>
  <tbody>
    <?php $n=0; while($row = mysqli_fetch_array($resultado)){ $n++;?>
    <tr>
      <td class="text-center"><?php echo $n; ?></td>
      <td class="text-center"><?php echo $row["Nombre"]; ?></td>
      <td class="text-center"><?php echo $row["Animales"]; ?></td>
    </tr>
    <?php } ?>
  </tbody>
</table>
Inner Join PHP Resultado
Inner Join PHP Resultado

CONCLUSIÓN

La utilización de INNER JOIN en una sentencia que utiliza la mayoría de lenguajes de programación. Su uso radica en la unión de dos o más tablas para extraer información a través de una columna en común.

Su uso es muy recomendable y espero que lo implementen en sus proyectos web.

DESCARGA

Les dejare un vínculo para que descarguen el ejemplo completo. Espero les sirva estos ejemplos didácticos.

Descargar Ahora

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

6 comentarios

  1. YA HE RESUELTO EL PROBLEMA DE QUE SALGAN TODOS LOS REGISTROS QUE QUIERO EN LINEA, AHORA COMO PUEDO HACER PARA QUE POR MEDIDO DE LA PAGINA INGRESE UNA CEDULA DE IDENTIDAD Y APAREZCAN LOS DATOS DE DICHA CEDULA?

  2. ESTOY DUPLICANDO LA SENTENCIA PERO LO QUE QUIERO LOGRAR ES QUE ME SALGAN TODOS LOS DATOS EN UNA SOLA LINEA Y NO DEBAJO DE LA OTRA CONSULTA, COMO PODRIA HACER PARA QUE PUEDA HACERLO SIN DUPLICAR LA SENTENCIA?
    GRACIAS DE ANTEMANO.

  3. Buenas, me ha servido mucho su ejemplo soy nuevo en la carrera de Sistemas he estado practicando por mi cuenta, ahora tengo una pregunta, dentro de la sentencia $sql = “SELECT especie.Nombre, animales.Animales FROM especie INNER JOIN animales ON especie.id=animales.IdEspecie where animales.IdEspecie=1”;…. como podria hacer dentro de esa misma sentencia o de otro metodo visualizar otros registros?..muchas gracias espero me haya dado a entender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba