Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Mostrar solo un registro relacionado

Estas en el tema de Mostrar solo un registro relacionado en el foro de Mysql en Foros del Web. Estimados, tengo 2 tablas 1. Productos (id_producto, titulo_producto) 2. Imágenes (id_imagen, id_producto, imagen) Ambas están relacionadas por el campo: id_producto Y a cada id_producto de ...
  #1 (permalink)  
Antiguo 24/06/2014, 13:40
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
Mostrar solo un registro relacionado

Estimados, tengo 2 tablas

1. Productos (id_producto, titulo_producto)
2. Imágenes (id_imagen, id_producto, imagen)

Ambas están relacionadas por el campo: id_producto

Y a cada id_producto de la tabla Productos puede corresponderle 1 o más imágenes en la tabla Imágenes.

Yo necesito mostrar para cada id_producto 1 sola imagen relacionada.

hice esta consulta, pero me muestra todas las imágenes de cada id_producto
Código MySQL:
Ver original
  1. SELECT  titulo_producto FROM productos INNER JOIN imagenes ON imagenes.id_producto = productos.id_producto

e hice otra agregando "DISTINCT", pero me muestra todos los títulos de cada id_producto sin ninguna imágen relacionada de la tabla imágenes:
Código MySQL:
Ver original
  1. SELECT DISTINCT titulo_producto FROM productos INNER JOIN imagenes ON imagenes.id_producto = productos.id_producto

Cómo debo hacer, para que tan sólo me muestre una imágen de cada producto?

Gracias.
__________________
"Life goes on..."

Última edición por gnzsoloyo; 24/06/2014 a las 13:51
  #2 (permalink)  
Antiguo 24/06/2014, 13:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar solo un registro relacionado

Incluyendo la posibilidad de que varie imagenes en cada consulta, podría ser:
Código MySQL:
Ver original
  1. SELECT titulo_producto, imagen
  2.     (SELECT  titulo_producto, imagen
  3.     FROM productos P INNER JOIN imagenes I ON P.id_producto = I.id_producto
  4.     ORDER BY RAND()) T1
  5. GROUP BY titulo_producto;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/06/2014, 07:47
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Mostrar solo un registro relacionado

MIL GRACIAS! Funciona OK!

Pero ahora me pasa lo siguiente:


. Para cada registro que muestro, he puesto un enlace que me muestra otros detalles del registro, pero no me toma el campo id_producto cuando la envío por url.


Adjunto el còdigo completo:

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.

Abrazo!
Germán.
__________________
"Life goes on..."

Última edición por gnzsoloyo; 28/06/2014 a las 15:18 Razón: había un error en mi respuesta
  #4 (permalink)  
Antiguo 28/06/2014, 14:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Mostrar solo un registro relacionado

Añade los campos que necesites en la consulta
Código MySQL:
Ver original
  1. SELECT id_producto, titulo_producto, imagen
  2.     (SELECT id_producto, titulo_producto, imagen
  3.     FROM productos P INNER JOIN imagenes I ON P.id_producto = I.id_producto
  4.     ORDER BY RAND()) T1
  5. GROUP BY titulo_producto;

No pongas código PHP ni HTML en el hilo. Las normas del foro lo prohíben.
  #5 (permalink)  
Antiguo 01/07/2014, 13:13
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Mostrar solo un registro relacionado

Puse como me dijiste, pero el navegador me tira el siguiente error:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/wwwturi/public_html/educativo2.php on line 180

No puedo enviarte la consulta con el código PHP para que veas bien como quedó x que quizás me bloqueen.
__________________
"Life goes on..."
  #6 (permalink)  
Antiguo 01/07/2014, 13:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar solo un registro relacionado

Pero puedes mostrar la consulta en pantalla con un simple "echo", copiarla y postear el SQL aquí. Eso es lo único que nos interesa. Lo que hagas con PHP es irrelevante para nosotros.
Lo que sí te puedo aconsejar es que realices validaciones en tus scripts, que evidentemente no estás haciendo.
No puedes ejecutar sin mas una consulta a la base y no verificar que no devuelva errores. Eso es programación básica.
Pregunta en el foro de pHP cómo hacerlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/07/2014, 13:37
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
Problemas con select anidado en variable PHP

Estimados, tengo esta consulta:

Código MySQL:
Ver original
  1. SELECT id_producto, titulo_producto, imagen
  2. FROM (SELECT id_producto, titulo_producto, imagen
  3. FROM productos P INNER JOIN imagenes I ON P.id_producto = I.id_producto ORDER BY RAND()) T1
  4. GROUP BY titulo_producto;

y el navegador me tira el siguiente error:



Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/wwwturi/public_html/educativo2.php on line 163

¿Què estoy haciendo mal?
__________________
"Life goes on..."

Última edición por gnzsoloyo; 01/07/2014 a las 14:23 Razón: Código de programacion no permitido en foros de BBDD
  #8 (permalink)  
Antiguo 01/07/2014, 14:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar solo un registro relacionado

No abras nuevos threads pra tratar los mismos temas. Serán cerrados sin previo aviso (Leer las Politicas de Uso de FDW en caso de duas).

Código MySQL:
Ver original
  1. SELECT id_producto, titulo_producto, imagen
  2. FROM (SELECT id_producto, titulo_producto, imagen
  3.     FROM productos P
  4.         INNER JOIN imagenes I ON P.id_producto = I.id_producto
  5.     ORDER BY RAND()) T1
  6. GROUP BY titulo_producto;
A nivel de consulta no parece haber errores. No tengo el MySQL a mano para comprobarlo pero si hay un fallo, no parece ser de la query.

Pregunta en el Foro de PHP, pero cuando lo hagas, posteales todo el script donde se produce el fallo, ya que el error bien podría no ser lo que supones, sino otra cosa, y sin que vena el script completo, no podrán estar seguros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 08/07/2014, 11:23
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Mostrar solo un registro relacionado

Gracias por el consejo de los "threads" tendré más cuidado.

Estuve revisando las tablas y no hay errores. Lo único que se me ocurre es que no me tome el id_producto cuando quiero enviar dicho campo x que en la 1er. tabla este campo es único y del tipo auto_increment y en la de imágenes es múltiple y tipo INT. Será?

Abrazo.
__________________
"Life goes on..."
  #10 (permalink)  
Antiguo 08/07/2014, 11:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar solo un registro relacionado

Cita:
Lo único que se me ocurre es que no me tome el id_producto cuando quiero enviar dicho campo x
¿Enviarlo de dónde a dónde?
Si estás preguntando lo que haces en PHP, lo deberás consultar en el foro respectivo (es altamente probable que el fallo sea por alli).

Cita:
en la 1er. tabla este campo es único y del tipo auto_increment y en la de imágenes es múltiple y tipo INT. Será?
Irrelevante. En la primer tabla es PK, y en el segundo debe ser FK. De alli que en el segundo caso hable de "MULTI". Porque es una relación 1:N.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, join, php, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.