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

Problemas con DISTINCT

Estas en el tema de Problemas con DISTINCT en el foro de Mysql en Foros del Web. Hola a tod@s, tengo un problemilla al hacer una consulta usando DISTINCT en una base de datos mysql. NO me devuelve los registros duplicados, y ...
  #1 (permalink)  
Antiguo 08/10/2005, 03:42
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Problemas con DISTINCT

Hola a tod@s,

tengo un problemilla al hacer una consulta usando DISTINCT en una base de datos mysql. NO me devuelve los registros duplicados, y no es que me los devuelva solo una vez (que es lo que yo quiero) sino que los omite y me devuelve los demás.

a ver si alguien sabe algo sobre esto....
  #2 (permalink)  
Antiguo 08/10/2005, 06:17
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 8 meses
Puntos: 3
quieres obtener los registros duplicados de una tabla?

puedes hacerlo asi:
Código:
select *
from tabla
group by campo
having count(*) > 1
te devolvera los registros duplicados por "campo".

otra forma:
Código:
select t1.*
from tabla t1
inner join tabla t2 on t2.campo = t1.campo
esta ultima consulta sirve para ligar con tias.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 08/10/2005, 11:49
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Con el having solo me devuelve las duplicadas. Y yo quiero que me devuelva las no duplicadas y las duplicadas una vez.

El problema es que las filas resultado no son completamente iguales, solo un campo. Y yo quiero que las que tengan ese campo igual solo me salgan una vez. Pero con DISTINCT no me salen.

No se si me explico....
  #4 (permalink)  
Antiguo 08/10/2005, 12:08
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 8 meses
Puntos: 3
utiliza el "group by", por ejemplo.

tambien podrias poner la consulta que estas lanzando o la tabla para que te podamos ayudar mejor.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #5 (permalink)  
Antiguo 08/10/2005, 12:43
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
el group by me produce el mismo resultado que el distinct

TABLA1

id, nombre, codigo

1 - aa - 10
2 - bb - 12
3 - cc - 12
4 - dd - 13
5 - ee - 14
----------------------
TABLA2

codigo color
9 - negro
10 - rojo
11 - naranja
12 - amarillo
13 - verde
--------------------------
SELECT tabla1.codigo, tabla1.id, tabla2.color FROM tabla1, tabla2 WHERE tabla1.codigo=tabla2.codigo AND tabla2.color<>'negro'

este sería el resultado sin DISTINCT ni GROUP BY

codigo id color
10 - 1 - rojo
12 - 2 - naranja
12 - 3 - naranja
13 - 4 - verde

Yo lo que quiero es que me devuelva solo un registro por codigo, es decir que el de codigo 12 no salga dos veces. La fila resultado no es igual (ya que el id es distinto aunque los otros campos lo sean iguales) por eso me choca tanto. Esta es mi consulta (he provado con los parentesis en (tabla1.codigo) y el GROUP BY tabla1.codigo y el resultado es el mismo)

SELECT DISTINCT tabla1.codigo, tabla1.id, tabla2.color FROM tabla1, tabla2 WHERE tabla1.codigo=tabla2.codigo AND tabla2.color<>'negro'

y el resultado es el siguiente:

10 - 1 - rojo
13 - 4 - verde
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 14:23.