Foros del Web » Programación para mayores de 30 ;) » .NET »

Me salen los datos duplicados haciendo busqueda

Estas en el tema de Me salen los datos duplicados haciendo busqueda en el foro de .NET en Foros del Web. Hola tengo una tabla llamada gestioncv donde tengo sus tablas otra tabla llamada cursos uno de los campo es dni que es el de gestioncv ...
  #1 (permalink)  
Antiguo 10/12/2009, 03:48
 
Fecha de Ingreso: febrero-2007
Mensajes: 165
Antigüedad: 17 años, 2 meses
Puntos: 0
Me salen los datos duplicados haciendo busqueda

Hola tengo una tabla llamada gestioncv donde tengo sus tablas otra tabla llamada cursos uno de los campo es dni que es el de gestioncv idem con informaticaforma,idiomasforma.

He probado a hacer esto


sql="SELECT *
FROM gestioncv,cursos,informaticaforma,idiomasforma
WHERE gestioncv.nombre='PEPE'
AND cursos.dni=gestioncv.dni
AND informaticaforma.dni=gestioncv.dni
AND idiomasforma.dni=gestioncv.dni"
Me.oDataAdapter = New MySqlDataAdapter(sql, Me.oConexion)
Me.oDataSet = New DataSet
oConexion.Open()
Me.oDataAdapter.Fill(oDataSet, "gestioncv")
oConexion.Close()

Y la busqueda que lo he probado en MysqlFront
Tengo 2 registros de "PEPE" y me los repite tantas veces como registros hay, es decir que si tengo 12 campos PEPE PEREZ me sale 12 veces, PEPE GONZALEZ otras 12
  #2 (permalink)  
Antiguo 10/12/2009, 05:20
Avatar de Valery-Net  
Fecha de Ingreso: agosto-2008
Mensajes: 694
Antigüedad: 15 años, 8 meses
Puntos: 12
Respuesta: Me salen los datos duplicados haciendo busqueda

El problema está en que tienes una consulta mal diseñada.

Escribe la consulta usando Joins, sólo selecciona los campos que requieres, es muy fácil usar * pero no es lo adecuado.
  #3 (permalink)  
Antiguo 10/12/2009, 05:27
 
Fecha de Ingreso: febrero-2007
Mensajes: 165
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Me salen los datos duplicados haciendo busqueda

Ya lo he probado y sigue haciendome lo mismo lo he hecho asi

SELECT nombre,apellidos
FROM gestioncv
INNER JOIN cursos ON cursos.dni=gestioncv.dni
INNER JOIN informaticaforma ON informaticaforma.dni=gestioncv.dni
INNER JOIN idiomasforma ON idiomasforma.dni=gestioncv.dni
WHERE gestioncv.nombre='PEPE'
  #4 (permalink)  
Antiguo 10/12/2009, 15:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Respuesta: Me salen los datos duplicados haciendo busqueda

segun creo no deberias usar el inner join, ya que solo quieres datos de la primera tabla intenta asi:

SELECT nombre,apellidos
FROM gestioncv
LEFT JOIN cursos ON cursos.dni=gestioncv.dni
LEFT JOIN informaticaforma ON informaticaforma.dni=gestioncv.dni
LEFT JOIN idiomasforma ON idiomasforma.dni=gestioncv.dni
WHERE gestioncv.nombre='PEPE'
  #5 (permalink)  
Antiguo 10/12/2009, 17:10
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Me salen los datos duplicados haciendo busqueda

Con left join igual hará referencia a las demás tablas.
Es un problema de Query nada que ver con .Net en todo caso, deberías explicar mejor que debe arrojar tu consulta y sería bueno que nos des una idea más clara de las tablas que intervienen, un diagrama de esas tablas o algo así.

Saludos.
__________________
Eduardo Peredo
Wigoin
  #6 (permalink)  
Antiguo 12/12/2009, 13:40
danicuco
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Me salen los datos duplicados haciendo busqueda

Hola chicos...

Igual el problema viene por usar ese maravilloso asterisco... como ya te comenta Valery

Si colocas un "SELECT * FROM TABLA1,TABLA2,TABLA3 [...]" realmente no te hace distincion de ningun tipo y te retornará todas las filas que cumplan tus condiciones de busqueda de cada tabla...

Yo quitaria el asterisco podría que campos de cada tabla quiero obtener y añadiria la clausula DISCTINCT para eliminar registros duplicados, si no me equivoco eso te solventaria el error

SELECT DISTICNT gestioncv.nombre FROM gestioncv,cursos,informaticaforma,idiomasformaWHER E ...

saludos y suerte
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 12:56.