Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2008, 09:51
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años, 3 meses
Puntos: 1
una única consulta para distintas tablas

hola a todos/as: tengo un problema. tengo una base de datos con tres tablas:

tabla categorias: -- recoge las categorías
idcategoria------autonumerico
nombre----------nombre de la categoria

tabla productos: -- recoge los productos
idproducto-------autonumerico
producto---------nombre del producto
categoriaid------categoria a la que pertenece

tabla imagenes: -- recoge las imagenes asociadas a cada producto
idimagen--------autonumerico
imagen----------ruta de la imagen (las imagenes se archivan en un directorio llamado imagenes)
productoid------producto al que está asociado la imagen

como comprenderéis, el idcategoria = categoriaid y el idproducto = productoid

bien. yo lo que quiero es extraer un producto de la base de datos y que me diga sus datos, la categoria a la que pertenece y las imagenes asociadas a él.

esto lo hago a través de INNER JOIN y funciona. pero funciona sólamente cuando hay una única imagen asociada al producto. porque cuando hay más imágenes asociadas al producto me saca un nuevo registro para cada imagen repitiendo el resto de datos del producto.

una consulta tipo sería esta:
Código PHP:
function consulta()
    {
     
      
$sql "SELECT * FROM productos INNER JOIN categorias ON productos.categoriaid = categorias.idcategoria INNER JOIN imagenes ON productos.idproducto = imagenes.productoid ORDER BY idproducto DESC";
     
$result mysql_query($sql) or die (mysql_error());
     return 
$result;  
    }

$result consulta ();
$p mysql_num_rows($result);    
while(
$p mysql_fetch_array($result)) 
    {
echo 
"Nombre del Producto: $p[producto]";
echo 
"Categoria del Producto: $p[categoria]";
echo 
"Imagenes del Producto: $p[imagen]";


pues como os digo si hay una única imagen, no hay problema, saca esos datos, pero en el momento que hay más imagenes saca todos los datos por cada imagen asociada: supongamos un producto:

Nombre: BOLIGRAFO
Categoria: PAPELERIA
Imagenes asociadas: Imagen 1 e Imagen 2

pues la base de datos me devuelve

Nombre del Producto: BOLIGRAFO
Categoría del Producto: PAPELERIA
Imagenes del Producto: IMAGEN 1

Nombre del Producto: BOLIGRAFO
Categoría del Producto: PAPELERIA
Imagenes del Producto: IMAGEN 2

¿cómo hago para que las dos imágenes me salgan en un solo registro y no con datos repetidos como ahora?

como sería la consulta? que puedo estar haciendo mal? gracias por vuestra ayuda

Última edición por estibaliz2006; 26/08/2008 a las 10:06