Principales respuestas
Registros repetidos en datagridview

Pregunta
-
Hola!!!
Esta vez molesto por lo siguiente. Tengo un datagridview que muestra la consulta de una relación de tablas en Sql. El resultado a devolver tiene varios registros repetidos, porque así lo necesito. Por ejemplo, el documento aparece repetido tantas veces sea necesario.
Mi consulta es, cómo hago para que me muestre el mismo documento repetido 5 veces (por ejemplo), pero una sola vez? He intentado, previa lectura, utilizar DISTINCT (pero me los ordena ¿?) y con GROUP BY me da constantemente error porque no incluí a las otras columnas (¿?).
Este es el código de la consulta que me da perfecto. Lo que necesito es que de esa consulta me muestre un solo documento si es que se repite varias veces.
SELECT Alumnos.DNI, (Alumnos.APELLIDOS + ', ' + Alumnos.NOMBRES) as [APELLIDO/S Y NOMBRE/S], Cursos_Index.CURSO, Asigna_Condicion.CONDICION
FROM Asignaturas_Adeudadas
INNER JOIN Alumnos ON Asignaturas_Adeudadas.Id_Alumno_Tabla=Alumnos.Id_Alumno
INNER JOIN Cursos_Index ON Asignaturas_Adeudadas.CURSO=Cursos_Index.Id_Curso
INNER JOIN Asigna_Condicion ON Asignaturas_Adeudadas.CONDICION=Asigna_Condicion.Id_Condicion
WHERE Id_Curso= codcurso
GRACIAS!!!
Lucho :-)
---
Respuestas
-
Ah, si solo necesitas el DOC, entonces suprime los otros campos de la Select y ponle el Distinct:
SELECT DISTINCT Alumnos.DNI FROM...
Pero si necesitas alguna otra cosa después del DNI, entonces tienes que tomar alguna decisión acerca de cuál de los valores quieres presentar. Por ejemplo, si tienes esto:
SELECT DISTINCT Alumnos.DNI, OtraCosa FROM ...
entonces, ¿qué pasa si para un mismo DNI hay dos valores de OtraCosa? ¿Cuál es tu criterio para decidir cuál de los dos quieres presentar, puesto que solo quieres mostrar el DNI una vez?
- Marcado como respuesta Luciano Larraburu viernes, 16 de febrero de 2018 0:08
Todas las respuestas
-
Si por "documento" te refieres a cada una de las líneas, y no quieres que haya líneas que tengan todos los campos iguales, entonces lo correcto es ponerle un DISTINCT. No te extrañe que te ordene los datos, esto se debe a que tu consulta no tiene un ORDER BY, y en SQL cuando no se escribe ORDER BY el orden es completamente arbitrario y el servidor puede devolver los datos en cualquier orden que le venga bien. Y en el caso del DISTINCT, el orden que le viene bien es el de los datos ordenados, porque al ordenarlos es muy fácil eliminar las repeticiones dado que quedan consecutivas. Si no te gusta el orden que pone SQL, tienes que cambiarlo poniendo ORDER BY; de no hacerlo así, el orden es arbitrario y aunque te parezca que los datos tienen un determinado orden, en realidad puede cambiar en cualquier momento, según vayan modificándose los datos en disco, o según el grado de ocupación de la CPU, según la fragmentación de los índices, etc., etc.
-
Hola Alberto Poblacion!!!
GRACIAS por tu respuesta.
Sobre el orden, no me molesta en absoluto, simplemente comentaba lo que yo observaba al utilizar esas claves.
Respecto a DOCUMENTO, lo dije así genérico porque se que pueden responder desde cualquier país. Documento era en referencia a documento de identidad. Es una tabla que tiene los documentos de identidad repetidos, porque así lo necesito. El tema es que para mostrar el datagrid no quiero se vean todos los documentos repetidos. Eso se podrá hacer luego para otra edición que hace el usuario.
TABLA ORIGINAL:
DOC ASIG COND
123 1 1
456 1 2
123 2 1
456 1 1
123 2 2LO QUE APARECE EN EL DATAGRIDVIEW:
DOC ASIG
123 1
456 1
123 2
456 1
123 2LO QUE NECESITO:
DOC
123
456GRACIAS!!!
Lucho :-)
---
- Editado Luciano Larraburu lunes, 12 de febrero de 2018 20:31
-
Ah, si solo necesitas el DOC, entonces suprime los otros campos de la Select y ponle el Distinct:
SELECT DISTINCT Alumnos.DNI FROM...
Pero si necesitas alguna otra cosa después del DNI, entonces tienes que tomar alguna decisión acerca de cuál de los valores quieres presentar. Por ejemplo, si tienes esto:
SELECT DISTINCT Alumnos.DNI, OtraCosa FROM ...
entonces, ¿qué pasa si para un mismo DNI hay dos valores de OtraCosa? ¿Cuál es tu criterio para decidir cuál de los dos quieres presentar, puesto que solo quieres mostrar el DNI una vez?
- Marcado como respuesta Luciano Larraburu viernes, 16 de febrero de 2018 0:08