SQL - AYUDA SENTENCIA SQL

   
Vista:

AYUDA SENTENCIA SQL

Publicado por Víctor (1 intervención) el 10/06/2008 19:09:25
Buenas tardes compañeros!

Bueno soy bastante novatillo en la programación y en el trabajo tengo un problemita...os cuento,

Dadas las tablas y sus campos Aspirantes(CLAVE_ASPI,NIF) y Notas(CLAVE_ASPI,EJERCICIO,EXEMPTO)

Cada aspirante de la tabla Aspirante tiene los ejercicios 0,1,2 en la tabla Notas, donde el ejercicio 0 es la "suma" de los ejercicios 1 y 2, lógicamente el aspirante que tiene exentos los ejercicios 1 y 2 tendrá tambien exento el ejercicio 0.

Pero no es asi, En algunos aspirantes que tienen exentos el ejercicio 1 y 2 no lo tienen en el 0

Mi problema es localizarlos, ya que necesito una Select de los aspirantes con el ejercicio 1 y 2 en el campo exento= S (SI) y que tengan el ejercicio 0 con el campo exento =N (NO) para luego poder updatear la base de datos y modificar este error.

La select que me muestra estos resultados es senzilla, pero me aparece un problema, yo sólo necesito los aspirantes que tengan los 3 ejercicios, ya que me aparecen muchos que no tienen los 3 (bien porque no tengan los 3 ejercicios o porque alguno no me cumple las condiciones de la Select.)

Ejemplo:

Clave_aspi Ejercicio Exempto

00001 0 N
00001 1 S
00001 2 S
00002 0 N
00002 1 S
00002 2 S
00003 1 N
00004 0 N
00004 1 S
00005 0 N
00005 1 S
00005 2 S

Es decir los aspirantes con las claves 00003 y 00004 no me interesan para mi select, alguna idea del estilo Select Count para que me muestre solamente los que cumplen mi Select pero que tengan los 3 ejercicios.

Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA SENTENCIA SQL

Publicado por Isaias (5073 intervenciones) el 12/06/2008 19:33:51
create table #notas(Clave_aspi varchar(5), Ejercicio int, Exempto char(1))

insert into #notas values('00001', 0,'N')
insert into #notas values('00001', 1,'S')
insert into #notas values('00001', 2,'S')
insert into #notas values('00002', 0,'N')
insert into #notas values('00002', 1,'S')
insert into #notas values('00002', 2,'S')
insert into #notas values('00003', 1,'N')
insert into #notas values('00004', 0,'N')
insert into #notas values('00004', 1,'S')
insert into #notas values('00005', 0,'N')
insert into #notas values('00005', 1,'S')
insert into #notas values('00005', 2,'S')

UPDATE #notas SET #notas.Exempto = 'S'
FROM #notas JOIN (select Clave_aspi FROM #notas where Ejercicio = 1 and Exempto = 'S') AS E1
ON #notas.Clave_aspi = E1.Clave_aspi
JOIN (select Clave_aspi FROM #notas where Ejercicio = 2 and Exempto = 'S') AS E2
ON #notas.Clave_aspi = E2.Clave_aspi
WHERE #notas.Ejercicio = 0 and #notas.Exempto = 'N'

select * from #notas

00001 0 S
00001 1 S
00001 2 S
00002 0 S
00002 1 S
00002 2 S
00003 1 N
00004 0 N
00004 1 S
00005 0 S
00005 1 S
00005 2 S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar