Portada » MYSQL La base de datos » Unir dos tablas y buscar con PHP & MySQL

Unir dos tablas y buscar con PHP & MySQL

Unir dos tablas y buscar con PHP & MySQL. En esta ocasión nos enfocaremos en realizar búsquedas en dos tablas unidas por la sentencia INNER JOIN por defecto, y consiste en combinar y/o unificar cada fila de una tabla1 con cada fila de la otra tabla2, filtrando las filas que cumplan una determinada condición en común.

Por lo tanto, si deseamos realizar consultas en dos tablas es recomendable la utilización de la sentencias JOIN.

Unir dos tablas y buscar con PHP & MySQL

Sin embargo. Podemos utilizar la cláusula «WHERE» para usar el operador «LIKE» y poder realizar búsquedas precisas dentro de las dos tablas de acuerdo a una columna declarado en la cláusula WHERE.

Hagamos una breve explicación en el cual usaremos dos tablas una llamada «ALUMNOS» y la otra tabla llamada «CURSOS» aplicaremos una consulta en el cual explicaremos a continuación.

  1. Ejemplo 01: Relacionar tablas con Inner Join

A) Tabla «Alumnos», con la clave primaria «cod»

tabla alumnos inner join
Tabla alumnos inner join

b) Tabla «Cursos», con la clave primaria «id_curso»

"<yoastmark

Aplicamos la consulta con la sentencia INNER JOIN

SELECT nombres, ape_paterno, ape_materno FROM alumnos
INNER JOIN cursos 
WHERE alumnos.id_curso = cursos.id_curso

Resultado Final después de realizar la consulta SQL. Si observamos veremos una tabla combinada donde hay columnas de las dos tablas relacionadas, tanto de la tabla «alumnos» como de la tabla «cursos». Esta unificación es posible gracias a la sentencia INNER JOIN.

Por lo tanto. Esta presentación hace que la información sea más relevante a la hora de tomar decisiones dentro de una organización.

Resultado consulta inner join
Resultado consulta inner join

2. Ejemplo 2: Buscador PHP y MYSQL usando INNER JOIN y clausula WHERE

Esta es la consulta que usaremos para este ejemplo, un poco grande pero funcional para este ejemplo de buscador INEER JOIN.

$sqln=mysqli_query($conn, "SELECT t1.id_pago, t1.monto, t1.fecha,t1.cantidad, t2.nombre_curso FROM pagos
t1 INNER JOIN  curso t2 ON t1.id_curso=t2.id_curso 
WHERE t2.nombre_curso LIKE '%$pbu%' order by t1.id_pago desc") 
or die(mysqli_error());

Estructura del buscador INNER JOIN completo.

Base de datos y sus Tablas

Trabajaremos en una base de datos llamada «php_union» en la cual contendrá 2 tablas, Una llamada «cursos» y otra llamada «pagos».

CREATE TABLE `curso` (
  `id_curso` int(2) NOT NULL,
  `codcur` varchar(20) DEFAULT NULL,
  `nombre_curso` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `duracion` varchar(120) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

--
-- Volcado de datos para la tabla `curso`
--

INSERT INTO `curso` (`id_curso`, `codcur`, `nombre_curso`, `duracion`) VALUES
(1, '0001WORD', 'WORD', '3 SEMANAS'),
(2, '0002EXCEL', 'EXCEL', '3 SEMANAS'),
(3, '0003POWER', 'POWER POINT', '3 SEMANAS'),
(4, '0004PUBLI', 'PUBLISER', '3 SEMANAS'),
(5, '0005INTER', 'INTERNET', '2 SEMANAS'),
(6, '0006ACCE', 'ACCESS', '4 SEMANAS');

-- --------------------------------------------------------


CREATE TABLE `pagos` (
  `id_pago` int(3) NOT NULL,
  `id_curso` int(11) DEFAULT NULL,
  `monto` decimal(7,2) DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `cantidad` int(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

--
-- Volcado de datos para la tabla `pagos`
--

INSERT INTO `pagos` (`id_pago`, `id_curso`, `monto`, `fecha`, `cantidad`) VALUES
(1, 1, '20.00', '2018-05-30', 1),
(2, 1, '30.00', '2018-05-31', 1),
(3, 2, '40.00', '2018-05-31', 1),
(4, 2, '100.00', '2018-05-31', 1),
(5, 3, '25.00', '2018-05-30', 1),
(6, 3, '50.00', '2018-05-31', 1),
(7, 4, '60.00', '2018-05-31', 1),
(8, 4, '80.00', '2018-05-31', 1),
(9, 5, '27.00', '2018-05-30', 1),
(10, 5, '49.00', '2018-05-31', 1),
(11, 6, '90.00', '2018-05-31', 1),
(12, 6, '90.00', '2018-05-31', 1);

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `curso`
--
ALTER TABLE `curso`
  ADD PRIMARY KEY (`id_curso`);

--
-- Indices de la tabla `pagos`
--
ALTER TABLE `pagos`
  ADD PRIMARY KEY (`id_pago`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `curso`
--
ALTER TABLE `curso`
  MODIFY `id_curso` int(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT de la tabla `pagos`
--
ALTER TABLE `pagos`
  MODIFY `id_pago` int(3) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
La Tabla Cursos

Tabla Pagos

"<yoastmark

Fichero conexion.php

Este será encargado de realizar la conexión con el servidor

<?php
$servidor= "localhost";
$usuario= "root";
$password = "";
$nombreBD= "php_union";
?>
Index.php

Aquí se mostrara el formulario para realizar la búsqueda y también mostrara resultados de la base de datos MySQL

<ul class="list-group">
  <li class="list-group-item">
<form method="GET">
  <div class="form-row align-items-center">
    <div class="col-auto">
      <label class="sr-only" for="inlineFormInput">Curso</label>
      <input name="curso" type="text" class="form-control mb-2" id="inlineFormInput" placeholder="Ingrese curso">  
      <input name="buscar" type="hidden" class="form-control mb-2" id="inlineFormInput" value="v">
    </div>
   
    <div class="col-auto">
      <button type="submit" class="btn btn-primary mb-2">Buscar Ahora</button>
    </div>
  </div>
</form>
  </li>

</ul>

El código PHP encargado de procesar la palabra clave enviada a través del formulario

<?php
include('conexion.php');
$conn = new mysqli($servidor, $usuario, $password, $nombreBD);
if ($conn->connect_error) {
    die("la conexión ha fallado: " . $conn->connect_error);
}

if(isset($_GET["curso"])){
$pbu=$_GET["curso"];	
	}
	
if(isset($_GET["buscar"])){                  
$sqln=mysqli_query($conn, "SELECT t1.id_pago, t1.monto, t1.fecha,t1.cantidad,  t2.nombre_curso FROM pagos t1 INNER JOIN  curso t2 ON t1.id_curso=t2.id_curso WHERE t2.nombre_curso LIKE '%$pbu%' order by t1.id_pago desc") or die(mysqli_error());
}
?>

<table class="table">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">Curso</th>
      <th scope="col">Monto</th>
      <th scope="col">Cantidad</th>
      <th scope="col">Fecha</th>
    </tr>
  </thead>
<?php
if(isset($_GET["buscar"])){ 
$n=0;
while ($dato=mysqli_fetch_array($sqln))
{	$n++;


echo"<tbody>";
echo"<tr>";
echo"<th scope='row'>".$n."</th>";
echo"<td>".$dato['nombre_curso']."</td>";
 echo"<td>".$dato['monto']."</td>";
echo"<td>".$dato['cantidad']."</td>";
echo"<td>".$dato['fecha']."</td>";
echo"</tr>";
echo"  </tbody>";
}
}
?>

</table>
Unir dos tablas y buscar con PHP & MySQL
Unir dos tablas y buscar con PHP & MySQL

CONCLUSIÓN

Hoy en día casi todo la información de una empresa y/o organización se almacenan en una base de datos. Sin embargo, se puede utilizar varios gestores de almacenamiento.

En este ejemplo estamos usando MySQL y lo que deseamos es optimizar los resultados a través de una consulta SQL. Por lo tanto, estamos usando la sentencia INNER JOIN para poder unir dos tablas y realizar una búsqueda precisa.

Les dejare el ejemplo completo para que puedan descargar esta pequeña muestra y que ustedes pueden modificar de acuerdo a sus necesidades.

Esta forma de realizar consultas es muy usada en la mayoría de programadores para lograr un trabajo eficiente.

DESCARGA

Descargar Código Fuente

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 3 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad