Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/09/2012, 08:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con DISTINCT

Cita:
Iniciado por protoameeba Ver Mensaje
hasta ahi todo bien pero como puedo despues acceder a la fecha y a el comentario si en el SELECT con el DISTINCT no los he incluido....???

y si los incluyo me saca dos veces el resultado Carlitos comentando el mismo album y la misma foto porque tienen distintas fechas... y distintos comentaios
Antes que nada lo que tienes que entender bien es no sólo el funcionamiento del DISTINCT, tienes que entender el funcionamiento general del SQL. Este maneja tablas y responde con tablas, donde la "repetición" de datos no existe desde el punto de vista lógico, porque el SQL no considera que cada columna sea una entidad diferente. El SQL evalúa registros al responder, no exactamente columnas. Y como los registros son diferentes, debe incluirlos completos, o la diferencia no se vería
Desde ese punto de vista, esas repeticiones no son tales, porque cada registro es distinto, considerado como unidad.
Lo que tu estás tratando de lograr es un reporte, no una simple consulta, y para eso existen diferentes soluciones.
Una de las soluciones es manejar la representacion de datos en pantalla en la programación de tus aplicaciones. Es lo que suele recomendarse para mantener las consultas simples.
Otra solución es usar otro tipo de aplicaciones como fuente de reportes, las cuales están programadas para ese tipo de cosas. El Oracle Discoverer, en el caso de Oracle es un ejemplo de eso (aunque no sirve para tu caso).
Y finalmente, lo que puedes hacer es aprovechar algunas funciones y sintaxis que MySQL tiene para el caso. Exige consultas más complejas, y ocasionalmente reduce la performance general de una forma marcada, como por ejemplo:
Código MySQL:
Ver original
  1. SELECT dato1, dato2, dato3, fecha, dato5
  2.     (SELECT dato1, dato2, dato3, fecha, dato5
  3.     FROM nombre_tabla
  4.     WHERE usuario='$usuario'
  5.     ORDER BY fecha) T1
  6. GROUP dato1, dato2, dato3, fecha WITH ROLLUP;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)