Obtener folios con cantidad de títulos distinto de 34

Edwin Euclides Egger 40 Puntos de reputación
2024-06-13T12:39:48.02+00:00

Tengo un DB sqlserver2014 con las tablas Titulos, Folios y Libros. En Titulos se guardan los datos de los graduados, el Libro y Folio. Libro y Folio se refieren al Libro Matriz (físico, no digital) donde se registran. Cada folio del libro matriz tiene 34 renglones (o filas), Por lo tanto en la tabla Titulos debe haber exactamente 34 registro por cada folio y libro, Excepto para el ultimo folio que puede estar incompleto. Intento hacer una consulta que devuelva los folios que tienen más o menos de 34 registro. La tablas tiene estos campos

Titulos: Idtit, NroRegistro, Nombres, Libro, Folio

Folios: IdLibFol, IdLib, Folio, NroFolio <-- en Folio se guardan datos nvarchar: "124-125". en NroFolio, enteros: 62

Libro: IdLib, Libro.

Mi intento(fallido) (54 es el último folio, este podría estar incompleto)

SELECT T.Libro, T.Folio, F.NroFolio, COUNT(*) AS Cant

FROM Titulos AS T INNER JOIN Folios AS F ON T.Folio = F.Folio

GROUP BY T.Libro, T.Folio, F.IdLibFol, F.NroFolio, F.IdLib

HAVING (COUNT(*) < 34 AND F.IdLib = 7 AND (SELECT MAX(NroFolio) AS MaxNroFolio FROM Folios AS F1 WHERE F1.IdLib = 7) < 54)

OR (COUNT(*) > 34 AND F.IdLib = 7)

Esta consulta me devuelve varios folios con 35 o 36 títulos. Aparentemente cuenta los folios de otros libros. Cual es el problema?

Muchas gracias desde ya.

SQL Server
SQL Server
Familia de sistemas de análisis y administración de bases de datos relacionales de Microsoft para soluciones de comercio electrónico, línea de negocio y almacenamiento de datos.
123 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Lo más útil
  1. Jonathan Pereira Castillo 11,775 Puntos de reputación Proveedor de Microsoft
    2025-01-15T21:25:30.1866667+00:00

    ¡Hola Edwin Euclides Egger!

    Esperamos que este mensaje te encuentre bien.

    Lamentamos sinceramente la demora en abordar tu tema en este foro.  

    Parece que tu consulta está contando los folios de otros libros debido a la forma en que se están uniendo las tablas y agrupando los resultados. Aquí tienes una versión ajustada de tu consulta para asegurarte de que solo se cuenten los registros del libro específico:

    SQLCopiar

    SELECT
    

    Explicación:

    INNER JOIN: Asegúrate de unir las tablas Titulos y Folios tanto por Folio como por Libro para evitar contar folios de otros libros. WHERE: Filtra los registros para el libro específico (IdLib = 7). HAVING: Ajusta la condición para contar solo los folios que tienen menos de 34 registros y no son el último folio, o los que tienen más de 34 registros.

    Notas:

    La subconsulta en el HAVING asegura que solo se consideren los folios que no son el último folio. La condición COUNT(*) > 34 se mantiene para identificar los folios con más de 34 registros.

    Espero que esto resuelva tu problema. Si necesitas más ayuda, no dudes en preguntar. ¡Buena suerte!

    Si no recibimos una respuesta tuya en los próximos días, procederemos a cerrar el tema. Sin embargo, queremos asegurarte que siempre estamos disponibles para cualquier asistencia que puedas necesitar.

    Agradecemos tu comprensión y estamos aquí para ayudar en lo que sea necesario.

    Estaré atento a tu respuesta.,

     Jonathan

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas pueden ser marcadas como Respuestas aceptadas por el autor de la pregunta, lo que indica a los usuarios que la respuesta resolvió su problema.