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

Problema con consulta SQL

Estas en el tema de Problema con consulta SQL en el foro de Mysql en Foros del Web. Hola, que tal? Estoy tratando de corregir una consulta que hago a la base de datos pero no logro obtener especificamente lo que quiero. Estas ...
  #1 (permalink)  
Antiguo 24/08/2011, 21:04
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 9 meses
Puntos: 8
Problema con consulta SQL

Hola, que tal?

Estoy tratando de corregir una consulta que hago a la base de datos pero no logro obtener especificamente lo que quiero.

Estas son mis 2 tablas:

Código PHP:
productos:
producto_id    |nombre    |color
1              
|caja      |verde
2              
|pelota    |negro
3              
|sillon    |azul

imagenes
:
imagen_id    |producto_id      |imagen
1            
|1                |imagenes/imagen1.jpg
2            
|1                |imagenes/imagen2.jpg
3            
|2                |imagenes/imagen3.jpg
4            
|2                |imagenes/imagen4.jpg
5            
|3                |imagenes/imagen5.jpg
6            
|3                |imagenes/imagen6.jpg 
Quiero hacer una consulta que muestre el nombre del producto, el color y solo la primera imagen de cada producto.

La consulta que hago es la siguiente:
Código PHP:
Select nombrecolorimagen from productos,imagenes where productos.producto_id imagenes.producto id 
Pero eso me muestra lo siguiente:
Código PHP:
nombre    |color    |imagen
caja      
|verde    |imagenes/imagen1.jpg
caja      
|verde    |imagenes/imagen2.jpg
pelota    
|negro    |imagenes/imagen3.jpg
pelota    
|negro    |imagenes/imagen4.jpg
sillon    
|azul     |imagenes/imagen5.jpg
sillon    
|azul     |imagenes/imagen6.jpg 
Y lo que quiero que me muestre es lo siguiente:
Código PHP:
nombre    |color    |imagen
caja      
|verde    |imagenes/imagen1.jpg
pelota    
|negro    |imagenes/imagen3.jpg
sillon    
|azul     |imagenes/imagen5.jpg 
Me hago entender? Como debo de modificar mi consulta para lograr lo que quiero?

Muchas gracias por su ayuda!
  #2 (permalink)  
Antiguo 24/08/2011, 21:11
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con consulta SQL

¿Y porque no usas SELECT DISTINCT?

Código PHP:
SELECT DISTINCT FROM tabla WHERE condicion 
  #3 (permalink)  
Antiguo 24/08/2011, 21:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con consulta SQL

Amigo morfasto, una consulta de SQL no corresponde al foro de PHP, pues no es problema de código PHP.

He reportado tu mensaje para que lo muevan al foro correcto, el de base de datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 24/08/2011, 21:13
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Problema con consulta SQL

Obvio te va a sacar esos datos, estás comparando con el producto_id de la segunda tabla que contiene los campos que salen.
En todo caso, compáralo con imagen_id..
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 24/08/2011, 21:30
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Problema con consulta SQL

Gracias pateketrueke.

Intente usarlo con Select distinct y me sale lo mismo:
Código PHP:
Ver original
  1. Select distinct nombre, color, imagen from productos,imagenes where productos.producto_id = imagenes.producto id
  #6 (permalink)  
Antiguo 24/08/2011, 22:43
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con consulta SQL

Acabo de mirar tu tabla y creo que estas cometiendo un error en su creación. Estas relacionando producto_id 1 y le colocas dos imagenes distintas. Es decir si quieres un id de un producto solo puede ir asociado a una imagen. Por eso jamas te podra salir bien.
  #7 (permalink)  
Antiguo 24/08/2011, 22:48
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Problema con consulta SQL

En serio esta mal mi tabla?

Yo creo que mi tabla esta bien, porque en la tabla de imagenes dice que el producto 1 tiene 2 imagenes distintas, una que esta guardada en el registro de imagen_id 1 y otra en el imagen_id 2. Cual es el problema con la tabla, entiendo.
  #8 (permalink)  
Antiguo 24/08/2011, 23:07
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Problema con consulta SQL

¿Acaso leíste mi post?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 24/08/2011, 23:07
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con consulta SQL

Cita:
La consulta que hago es la siguiente:
Código PHP:
Select nombre, color, imagen from productos,imagenes where productos.producto_id = imagenes.producto id
Pero eso me muestra lo siguiente:
Código PHP:
nombre    |color    |imagen 
caja      
|verde    |imagenes/imagen1.jpg 
caja      
|verde    |imagenes/imagen2.jpg 
pelota    
|negro    |imagenes/imagen3.jpg 
pelota    
|negro    |imagenes/imagen4.jpg 
sillon    
|azul     |imagenes/imagen5.jpg 
sillon    
|azul     |imagenes/imagen6.jpg 
Y lo que quiero que me muestre es lo siguiente:
Código PHP:
nombre    |color    |imagen 
caja      
|verde    |imagenes/imagen1.jpg 
pelota    
|negro    |imagenes/imagen3.jpg 
sillon    
|azul     |imagenes/imagen5.jpg 
Me hago entender? Como debo de modificar mi consulta para lograr lo que quiero?
Pues creo que tu mismo te estas contradiciendo. Dices que tienes dos imagenes (imagen 1 y 2) que corresponden a un unico objeto, pero a su vez quieres que en la consulta solo salga una imagen del mismo. (Cosa que haria que la imagen 2 sea de adorno y jamas se use para nada).

Me parece que debes pensar en un rediseño de la tabla o añadir algun campo donde puedas diferenciar cual imagen quieres (la imagen uno o dos). Por ejemplo poner un campo que diga seleccionar imagen y que tenga solo dos valores posibles (0 y 1 por ejemplo) y asi ya se podria agregar una condicion adicional AND para que de un solo resultado.
  #10 (permalink)  
Antiguo 25/08/2011, 11:18
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Problema con consulta SQL

Tuve que hacer lo que me dijiste, cree un nuevo campo en la tabla para poder mostrar solo la primera imagen.

No habia otra manera de solucionarlo?, me refiero a solo cambiando la consulta?

Gracias a todos los que apoyaron!
  #11 (permalink)  
Antiguo 25/08/2011, 12:40
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: Problema con consulta SQL

Creo que la mejor solución sería poner un nuevo campo pero si quieres malamente obtener solo la primera deberías hacer la siguiente query:

Código SQL:
Ver original
  1. SELECT pr.nombre, pr.color, im.imagen
  2. FROM productos pr, (SELECT * FROM imagenes GROUP BY producto_id) im
  3. WHERE pr.producto_id = im.producto_id

Saludos.

Etiquetas: imagenes, php, 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 05:10.