Hola,
He visto muchas veces este tipo de programación aquí en foros del web, y me voy a tomar la molestia de explicar detenidamente como se hace :), porque al parecer ya son bastantes los que desarrollan aplicaciones de esta forma y posiblemente te va a ser de utilidad,
Supongamos que tenemos este diagrama, una tabla maestra y una tabla de detalle, aunque evidentemente 'categories_name' esta repetida en las dos tablas, pero traté de apegarme lo más posible a tu diseño.
Con esta estructura,
Código MySQL:
Ver original
INDEX `fk_categories_description_categories` (`categories_id` ASC) , REFERENCES `categories`.
`categories` (`categories_id` )
Cuando quieres extraer todos los registros de la tabla primaria (maestra) y después extraer los registros de la tabla relacionada (detalle), normalmente lo haces en un solo Query, salvo en casos excepcionales donde no es posible,
Código PHP:
<body>
<?php
$conn = mysql_connect('localhost', 'root', 'PASSWORD');
mysql_select_db('categories');
$strSQL = '
SELECT a.`categories_id`, a.`categories_name`, b.`categories_description`
FROM `categories` a
INNER JOIN `categories_description` b
ON a.`categories_id` = b.`categories_id`
ORDER BY a.`categories_id`
';
$result = mysql_query($strSQL, $conn);
if (mysql_num_rows($result) == 0) {
echo '<h1>No hay datos</h1>';
} else {
$i = 0;
while (($row = mysql_fetch_assoc($result)) != NULL) {
if ($i != $row['categories_id']) {
$i = $row['categories_id'];
echo "<h1>Cateogiria : $i {$row['categories_name']}</h1>";
}
echo "<p>Titulo : {$row['categories_description']}</p>";
}
}
mysql_free_result($result);
mysql_close($conn);
?>
</body>
Cual es el problema, estadísticas; por ejemplo, tienes 5 categorías, cada categoría tiene 5 productos o descripciones, si haces una consulta por cada producto o descripción, estas haciendo 6 consultas a la base de datos. Una para sacar las categorías y 1 por cada categoría. Ahora multiplica eso por 5 usuarios de tu programa, son 30 consultas consecutivas o concurrentes a la base de datos, si ya sé que no es mucho, cuando tengas 100 categorias y 1000 usuarios entonces me cuentas como te va.
En este ejemplo solamente se hace 1 consulta a la base de datos por usuario, aunque traiga alguna información repetida es mucho mas eficiente que 6 consultas consecutivas.
Saludos,