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)[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;
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>
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
como se puede aplicar si la tabla de animales tuviera otra columna de pais y otra tabla de puros paies
Yo estoy buscando un ejemplo similar, y no lo encuentro tengo dos tablas relacionadas y necesito realizar un INSERT 🙁
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?
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.
Ademas por un metodo de entrada de datos por html haga el llamado por un campo clave y me muestre los registros de ese campo clave, se puede hacer?
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.