Access Consulta Faltan Registros con campos vacíos
Hola!
Gracias por vuestra ayuda de ante mano, mi problema es el siguiente...
Tengo una base de datos con varias tablas... TblAlumnos, TblSeminarios, TblGruposSeminarios, TblSolicitudes.
Los datos más relevantes son:
TblAlumnos.DNI, TblSeminarios.CodigoSeminario, TblGruposSeminarios.CodigoSeminario, TblGruposSeminarios.NumeroGrupo, TblSolicitudes.Dni, TblSolicitudes.CodigoSeminario1, TblSolicitudes.Horario1, TblSolicitudes.CodigoSeminario2, TblSolicitudes.Horario2, (y así podría en TblSolicitudes podría haber hasta 5 opciones.. Codigo5/Horario5)
Las relaciones son:os DNI entre ellos
TblAlumnos.DNI con TblSolicitudes.Dni
TblSolicitudes.CodigoSeminario1 y 2 con TblSeminarios.CodigoSeminario
TblSolicitudes.Horario1 y 2 con TblGruposSeminarios.NumeroGrupo
Mi problema es que necesito hacer listas de solicitudes por cursos, y filtrar según las opciones de cada alumno, teniendo en cuenta indistintamente todas las opciones elegidas por cada uno de los alumnos.
En los seminarios, existen, los que tienen un solo horario y los que tienen varios horarios (hasta 10 distintos) y en las solicitudes, pueden haber elegido Seminario (uno o varios) poniendo o no horario en cada uno de ellos.
De tal forma que he hecho este SQL que pongo a continuación:
SELECT TblAlumnosHistorico.DNI, TblGruposSeminarios.CodigoSeminario, TblGruposSeminarios.NumeroGrupo?FROM TblGruposSeminarios, TblAlumnosHistorico?WHERE (((TblAlumnosHistorico.DNI) In (SELECT TblSolicitudes.Dni FROM TblSolicitudes WHERE TblSolicitudes.Dni=TblAlumnosHistorico.DNI AND ((TblSolicitudes.CodigoSeminario1=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario1=TblGruposSeminarios.NumeroGrupo)) OR (TblSolicitudes.CodigoSeminario2=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario2=TblGruposSeminarios.NumeroGrupo))) ORDER BY TblAlumnosHistorico.DNI)) AND ((TblGruposSeminarios.Curso)="2011/2012"));
Pero me añade bien todos los casos de DNI con CodigoSeminario + Horario; pero no añade los casos en los que el horario está vacío.
He tratado de solucionar el problema, añadiendo lo siguiente antes del ORDER BY
OR (TblSolicitudes.CodigoSeminario1=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario1=NULL)) OR (TblSolicitudes.CodigoSeminario2=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario2=NULL))
Y me añade todo lo que necesito pero cuando no se ha elegido Horario en la opción, el DNI aparece tantas veces como grupos del seminario elegido haya en TblGruposSeminarios.
Teniendo por ejemplo
INGLES tiene 3 grupos
FRANCES tiene 1 grupo
y si la TblSolicitudes es:
DNI COD1 HOR1 COD2 HOR2
123456 INGLES 2 FRANCES
654321 INGLES
135790 FRANCES 1 INGLES 1
El resultado después de lo añadido sería:
DNI CODIGO HORARIO
123456 INGLES 2
123456 FRANCES 1
654321 INGLES 1
654321 INGLES 2
654321 INGLES 3
135790 FRANCES 1
135790 INGLES 1
Lo que yo necesito es que si el seminario sólo tiene un grupo, ponga un 1 y si tiene varios ponga algo así como "SIN SELECCIONAR"
Bueno creo que eso es todo ;) ALGUIEN PODRÍA AYUDARME?? GRACIAS:
Gracias por vuestra ayuda de ante mano, mi problema es el siguiente...
Tengo una base de datos con varias tablas... TblAlumnos, TblSeminarios, TblGruposSeminarios, TblSolicitudes.
Los datos más relevantes son:
TblAlumnos.DNI, TblSeminarios.CodigoSeminario, TblGruposSeminarios.CodigoSeminario, TblGruposSeminarios.NumeroGrupo, TblSolicitudes.Dni, TblSolicitudes.CodigoSeminario1, TblSolicitudes.Horario1, TblSolicitudes.CodigoSeminario2, TblSolicitudes.Horario2, (y así podría en TblSolicitudes podría haber hasta 5 opciones.. Codigo5/Horario5)
Las relaciones son:os DNI entre ellos
TblAlumnos.DNI con TblSolicitudes.Dni
TblSolicitudes.CodigoSeminario1 y 2 con TblSeminarios.CodigoSeminario
TblSolicitudes.Horario1 y 2 con TblGruposSeminarios.NumeroGrupo
Mi problema es que necesito hacer listas de solicitudes por cursos, y filtrar según las opciones de cada alumno, teniendo en cuenta indistintamente todas las opciones elegidas por cada uno de los alumnos.
En los seminarios, existen, los que tienen un solo horario y los que tienen varios horarios (hasta 10 distintos) y en las solicitudes, pueden haber elegido Seminario (uno o varios) poniendo o no horario en cada uno de ellos.
De tal forma que he hecho este SQL que pongo a continuación:
SELECT TblAlumnosHistorico.DNI, TblGruposSeminarios.CodigoSeminario, TblGruposSeminarios.NumeroGrupo?FROM TblGruposSeminarios, TblAlumnosHistorico?WHERE (((TblAlumnosHistorico.DNI) In (SELECT TblSolicitudes.Dni FROM TblSolicitudes WHERE TblSolicitudes.Dni=TblAlumnosHistorico.DNI AND ((TblSolicitudes.CodigoSeminario1=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario1=TblGruposSeminarios.NumeroGrupo)) OR (TblSolicitudes.CodigoSeminario2=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario2=TblGruposSeminarios.NumeroGrupo))) ORDER BY TblAlumnosHistorico.DNI)) AND ((TblGruposSeminarios.Curso)="2011/2012"));
Pero me añade bien todos los casos de DNI con CodigoSeminario + Horario; pero no añade los casos en los que el horario está vacío.
He tratado de solucionar el problema, añadiendo lo siguiente antes del ORDER BY
OR (TblSolicitudes.CodigoSeminario1=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario1=NULL)) OR (TblSolicitudes.CodigoSeminario2=TblGruposSeminarios.CodigoSeminario AND (TblSolicitudes.Horario2=NULL))
Y me añade todo lo que necesito pero cuando no se ha elegido Horario en la opción, el DNI aparece tantas veces como grupos del seminario elegido haya en TblGruposSeminarios.
Teniendo por ejemplo
INGLES tiene 3 grupos
FRANCES tiene 1 grupo
y si la TblSolicitudes es:
DNI COD1 HOR1 COD2 HOR2
123456 INGLES 2 FRANCES
654321 INGLES
135790 FRANCES 1 INGLES 1
El resultado después de lo añadido sería:
DNI CODIGO HORARIO
123456 INGLES 2
123456 FRANCES 1
654321 INGLES 1
654321 INGLES 2
654321 INGLES 3
135790 FRANCES 1
135790 INGLES 1
Lo que yo necesito es que si el seminario sólo tiene un grupo, ponga un 1 y si tiene varios ponga algo así como "SIN SELECCIONAR"
Bueno creo que eso es todo ;) ALGUIEN PODRÍA AYUDARME?? GRACIAS: