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

consulta duplica valores

Estas en el tema de consulta duplica valores en el foro de Mysql en Foros del Web. hola amigos pues una vez mas acudo a uds por un problemita que ya tiene rato dandome problema veran la siguientes consultas: SELECT DISTINCT(semilla_comercializada.especie_variedad) as ...
  #1 (permalink)  
Antiguo 23/04/2010, 19:53
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
consulta duplica valores

hola amigos pues una vez mas acudo a uds por un problemita que ya tiene rato dandome problema veran la siguientes consultas:


SELECT DISTINCT(semilla_comercializada.especie_variedad) as especie_c , sum(semilla_comercializada.cantidad) as cantidad_c FROM semilla_comercializada INNER JOIN semillas ON semilla_comercializada.especie_variedad=semillas.e specie_variedad GROUP BY semilla_comercializada.especie_variedad


================================================== ========
SELECT DISTINCT(yema_comercializada.especie_variedad) as especie_c , sum(yema_comercializada.cantidad) as cantidad_c FROM yema_comercializada INNER JOIN yema ON yema_comercializada.especie_variedad=yema.especie_ variedad GROUP BY yema_comercializada.especie_variedad



ambas consultas son identicas , solo que se enfocan a diferentes tablas , el problema es lo que me entrega la consulta (las tablas son identicas solo cambia el nombre y los datos almacenados en ellos)

la salida de la primera tabla es la siguiente

limon 4
naranja 89


y la salida de la segunda es

limon 6
naranja 109

ahora el problema es que en la tabla de semillas que corresponde a la primera consulta , en el campo limon solo tengo 2 y no 4 como aparece mas sin embargo el valor de naranjas si es correcto, en cambio en la tabla de yema , los dos valores son correctos , y la verdad no entiendo porque es que la primera consulta siempre me duplica el valor del registro LIMON unicamente de este , si anado mas registros de otros tipos no lo duplica ninguno solamente el correspondiente a limon de la tabla semillas , no entiendo porque pasa esto si la consulta es la misma y las tablas son copia una de la otra!
  #2 (permalink)  
Antiguo 23/04/2010, 21:06
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, 4 meses
Puntos: 2658
Respuesta: consulta duplica valores

En el contexto de esas consultas, el DISTINCT está creando una duplicación de registros, ya que afecta a ambos campos al mismo tiempo. Por otro lado, se vuelve innecesario cuando lo que pides es agrupar por el mismo campo que defines en el DISTINCT, esto es, el resultado es el mismo que buscas:
Código MySQL:
Ver original
  1.   YC.especie_variedad especie_c,
  2.   SUM(YC.cantidad) cantidad_c
  3. FROM yema_comercializada YC
  4.   INNER JOIN yema Y ON YC.especie_variedad=Y.especie_ variedad
  5. GROUP BY especie_c;

Código MySQL:
Ver original
  1.   YC.especie_variedad especie_c,
  2.   SUM(YC.cantidad) cantidad_c
  3. FROM yema_comercializada YC
  4.     INNER JOIN yema Y ON YC.especie_variedad = Y.especie_ variedad
  5. GROUP BY especie_c;

Tips:
- AS es una cláusula obsoleta desde hace años. Se conserva por compatibilidad de versiones anteriores, pero no se requiere.
- Usa alias con los nombres de tablas, especialmente cuando son largos. Ayuda a la legibilidad del código y el uso de los nombres tan largos tiende a generar errores de tipeo.
- Trata de escribir las sentencias en forma estructurada (saltos de línea con tabulaciones para los subgrupos). Facilita el análisis de la sintaxis.
- En MySQL, GROUP BY acepta el agrupamiento por el alias de los campos. Además, MySQL tambien admite agrupar por campos ocultos y por menos campos de los no afectados por las funciones de agregació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)
  #3 (permalink)  
Antiguo 24/04/2010, 01:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: consulta duplica valores

muchas gracias por tu pronta respuesta gnzoloyo , y si efectivamente la consulta funciona igual si distinct pero el problema continua y me sigue creando la duplicidad en el mismo resgistro , y sigue siendo solo en esa tabla y solo con esa especie :S

muchas gracias por los tips
  #4 (permalink)  
Antiguo 24/04/2010, 05:46
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, 4 meses
Puntos: 2658
Respuesta: consulta duplica valores

Hay que revisar, entonces, la estructura de las tablas y los datos que existan en ellas.

Postea el CREATE TABLE de las dos tablas y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/04/2010, 23:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: consulta duplica valores

gracias por la ayuda gnzoloyo , descubri mi error mientras revisaba los datos en las tablas , tenia duplicidad de registros por lo que el INNER JOIN cumplia dos veces la condicion y por ello lo duplicaba , todo quedo solucionado con un IN!!!

Etiquetas: Ninguno
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 08:58.