Ahora implementaremos el listado completo de la tabla articulos y recuperaremos la descripción del rubro que se encuentra en la otra tabla.
Tenemos que utilizar el comando select y la cláusula join para el emparejamiento con la tabla rubros.
El código completo de la página es:
pagina1.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Listado de artículos</title>
<style>
.tablalistado {
border-collapse: collapse;
box-shadow: 0px 0px 8px #000;
margin: 20px;
}
.tablalistado th {
border: 1px solid #000;
padding: 5px;
background-color: #ffd040;
}
.tablalistado td {
border: 1px solid #000;
padding: 5px;
background-color: #ffdd73;
}
</style>
</head>
<body>
<?php
$mysql = new mysqli("localhost", "root", "", "base1");
if ($mysql->connect_error)
die("Problemas con la conexión a la base de datos");
$registros = $mysql->query("select ar.codigo as codigoart,
ar.descripcion as descripcionart,
precio,
ru.descripcion as descripcionrub
from articulos as ar
inner join rubros as ru on ru.codigo=ar.codigorubro") or
die($mysql->error);
echo '<table class="tablalistado">';
echo '<tr><th>Código</th><th>Descripción</th><th>Precio</th><th>Rubro</th></tr>';
while ($reg = $registros->fetch_array()) {
echo '<tr>';
echo '<td>';
echo $reg['codigoart'];
echo '</td>';
echo '<td>';
echo $reg['descripcionart'];
echo '</td>';
echo '<td>';
echo $reg['precio'];
echo '</td>';
echo '<td>';
echo $reg['descripcionrub'];
echo '</td>';
echo '</tr>';
}
echo '<table>';
$mysql->close();
?>
</body>
</html>
Creamos alias para los campos que tienen el mismo nombre en las tablas de articulos y rubros. También creamos alias para las dos tablas con las que trabajamos.
En el from indicamos la tabla principal que estamos consultando que es la tabla articulos y luego con la cláusula inner join procedemos a indicar el nombre de la tabla relacionada y los dos campos por los que se emparejan: ru.codigo=ar.codigorubro
Luego dentro del while debemos hacer referencia a los alias que hemos creado:
while ($reg = $registros->fetch_array()) {
echo '<tr>';
echo '<td>';
echo $reg['codigoart'];
echo '</td>';
echo '<td>';
echo $reg['descripcionart'];
echo '</td>';
echo '<td>';
echo $reg['precio'];
echo '</td>';
echo '<td>';
echo $reg['descripcionrub'];
echo '</td>';
echo '</tr>';
}
En el navegador obtenemos una salida similar a esta:

Podemos no utilizar alias y acceder por medio de un índice numérico a cada columna de los campos que recupera el select:
$registros=$mysql->query("select ar.codigo as codigoart,
ar.descripcion as descripcionart,
precio,
ru.descripcion as descripcionrub
from articulos as ar
inner join rubros as ru on ru.codigo=ar.codigorubro") or
die($mysql->error);
echo '<table class="tablalistado">';
echo '<tr><th>Código</th><th>Descripción</th><th>Precio</th><th>Rubro</th></tr>';
while ($reg = $registros->fetch_array()) {
echo '<tr>';
echo '<td>';
echo $reg[0];
echo '</td>';
echo '<td>';
echo $reg[1];
echo '</td>';
echo '<td>';
echo $reg[2];
echo '</td>';
echo '<td>';
echo $reg[3];
echo '</td>';
echo '</tr>';
}
echo '<table>';
Como vemos ahora hacemos referencia a cada elemento por medio de un subíndice numérico que indica la posición del campo en el select: echo $reg[0];
La primer posición es la cero, luego sigue la uno y así sucesivamente.
NO PODEMOS indicar en el subíndice una cadena con el carácter punto: echo $reg['ar.descripcion'];
Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del
archivo que le dió)