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

Duda con DISTINCT

Estas en el tema de Duda con DISTINCT en el foro de Mysql en Foros del Web. Hola gente! Tengo una duda, yo realizo con el DISTINCT el siguiente SELECT @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT DISTINCT dato1 , dato2 , ...
  #1 (permalink)  
Antiguo 08/09/2012, 06:29
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Duda con DISTINCT

Hola gente!

Tengo una duda, yo realizo con el DISTINCT el siguiente SELECT

Código MySQL:
Ver original
  1. SELECT DISTINCT dato1,dato2,dato3 FROM nombre_tabla WHERE usuario='$usuario' ORDER BY fecha

me muestra bien los campos y toda la pesca, pero :

Como podria tener acceso a mas datos de la tabla, ya que de esta manera solo me deja acceder a los datos dato1,dato2,dato3???

Gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 08/09/2012, 06:55
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Duda con DISTINCT

Puedes poner que seleccione más campos añadiéndolo en la propia consulta.

Código MySQL:
Ver original
  1. SELECT DISTINCT dato1,dato2,dato3,dato4,dato5,dato6...

Y si necesitas todos los datos, usar wildcard:

Código MySQL:
Ver original
  1. SELECT DISTINCT * FROM nombre....

No sé si te ayudará porque es una respuesta muy obvia pero a la vez responde a tu pregunta.
  #3 (permalink)  
Antiguo 08/09/2012, 07:11
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con DISTINCT

ok, pero si quiero hacer una criba con DISTINCT solo de esos tres campos pero despues poder recuperar mas datos de la seleccion, como puedo hacer?

Ejemplo:

nombre-del-que-comenta--> Carlitos
album-comentado-->album1
foto-comentada--> foto1.jpg
fecha --> 10/09/2011
comentario--> patatinpatatan

y dos dias mas tarde Carlitos vuelve a comentar...

nombre-del-que-comenta--> Carlitos
album-comentado-->album1
foto-comentada--> foto1.jpg
fecha --> 12/09/2011
comentario--> estoylootro

ok?, pues ahora le aplico el DISTINCT sobre nombre-del-que-comenta,album-comentado,foto-comentada y lo ordeno por fecha...

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
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #4 (permalink)  
Antiguo 08/09/2012, 07:27
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Duda con DISTINCT

Ok, te había entendido mal.

Supongo que puedes usar UNION (y de paso ahorrarte DISTINCT).
  #5 (permalink)  
Antiguo 08/09/2012, 07:33
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con DISTINCT

ok,emm... podrias ponerme un ejemplo facil de sintaxis con campos inventados

Gracias!!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #6 (permalink)  
Antiguo 08/09/2012, 08:16
Avatar de 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)
  #7 (permalink)  
Antiguo 08/09/2012, 08:44
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con DISTINCT

Ok gnzsoloyo voy a tratar de asimilar / probar lo que me has comentado !! muchas gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #8 (permalink)  
Antiguo 08/09/2012, 09:36
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con DISTINCT

Ok muchas gracias funciona muy bien solo una cosa para los que quieran usarlo en la linea 7 falta un BY... osea quedaria asi:

Código SQL:
Ver original
  1. SELECT dato1, dato2, dato3, fecha, dato5
  2. FROM
  3.     (SELECT dato1, dato2, dato3, fecha, dato5
  4.     FROM nombre_tabla
  5.     WHERE usuario='$usuario'
  6.     ORDER BY fecha) T1
  7. GROUP BY dato1, dato2, dato3, fecha WITH ROLLUP;

Corrigeme si me equivoco!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #9 (permalink)  
Antiguo 08/09/2012, 09: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: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con DISTINCT


SI, lo siento. Se me escapó.
__________________
¿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: distinct, select, tabla, campos
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 06:14.