Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/07/2012, 14:39
Avatar de dryant
dryant
 
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Consulta INNER JOIN

Hola de nuevo!

Una vez conseguido el planteamiento correcto de la base de datos, ahora me surge otra duda.

He hecho una consulta con INNER JOIN para sacar la receta completa y he metido en un array los resultados.
He conseguido sin problema que me saque todos los ingredientes, con sus cantidades,
pero, aqui viene el problema: por cada ingrediente me saca el titulo y la preparacion, lo cual no es lo que quiero, ya que quiero que me saque el titulo y la preparacion solo una vez.
El codigo es el siguiente:
Código:
<?php
$conexion= mysql_connect("localhost","root","root");
if(!$conexion)
{
die ('No se ha conectado: '.mysql_error());
} echo "Te has conectado correctamente<br>";

mysql_select_db("recetas",$conexion);

$peticion=mysql_query("SELECT * 
FROM (`recetas` INNER JOIN `receta_ingredientes` ON `recetas`.idReceta=`receta_ingredientes`.idReceta) 
INNER JOIN `ingredientes` ON `ingredientes`.idIngrediente=`receta_ingredientes`.idIngrediente");

while ($fila = mysql_fetch_array($peticion))

{
echo $fila['tituloReceta']."<br>";
echo $fila['nombreIngrediente']." ".$fila['cantidad']." ".$fila['unidadMedida']."<br> ";
echo $fila['preparacion']."<br>";

}


mysql_close($conexion);

?>
Al ver el resultado que era algo asi como: (con un titulo y una preparacion por cada ingrediente)

Código HTML:
Tortilla de patatas
Huevos 4 unidades
pelamos las patatas las freimos y hacemos la tortilla
Tortilla de patatas
Cebolla 1 unidades
pelamos las patatas las freimos y hacemos la tortilla
Tortilla de patatas
patatas 500 gramos
pelamos las patatas las freimos y hacemos la tortilla
Entonces he pensado que con sacar el titulo y la preparacion fuera era suficiente del while y he hecho lo siguiente:
Código:
<?php
$conexion= mysql_connect("localhost","root","root");
if(!$conexion)
{
die ('No se ha conectado: '.mysql_error());
} echo "Te has conectado correctamente<br>";

mysql_select_db("recetas",$conexion);

$peticion=mysql_query("SELECT * 
FROM (`recetas` INNER JOIN `receta_ingredientes` ON `recetas`.idReceta=`receta_ingredientes`.idReceta) 
INNER JOIN `ingredientes` ON `ingredientes`.idIngrediente=`receta_ingredientes`.idIngrediente");

$fila = mysql_fetch_array($peticion);
echo $fila['tituloReceta']."<br>";
echo $fila['preparacion']."<br>";


while ($fila = mysql_fetch_array($peticion))
{
echo $fila['nombreIngrediente']." ".$fila['cantidad']." ".$fila['unidadMedida']."<br> ";
}


mysql_close($conexion);

?>
Pero ahora el problema es que me pone el titulo y la preparacion de la primera receta y luego el listado de todos los ingredientes de las otras recetas con sus unidades y cantidades pero sin su titulo y su preparacion.

Mi intencion es que salga de una forma logica, es decir
Código HTML:
Titulo receta1
Ingredientes receta1
Preparacion receta1

Titulo receta2
Ingredientes receta2
Preparacion receta2

...
Se puede arreglar la consulta INNER Join para que solo te diera el resultado una vez en cuestion de titulo, o tendria que hacerlo con PHP?

Muchas gracias!
__________________
Tecnología y tutoriales