Ayuda con select especifico

Hola amigo experto, tengo problemas con la búsqueda especifica en 2 tablas de mi bd, para que sea más de entender tengo la sig tabla registro(materias aprobadas por diferentes alumnos identificados por el campo cedulaal):
Periodo ! Cedulaal ! Materia
Abril 11000000 matemática I
Abril 11000000 ingles
Abril 12000000 programación
Tengo otra tabla llamada pemsum
Materia trimestre prelación
Matemática I 1 ninguna
Geometría 1 ninguna
Ingles 1 ninguna
Programación 1 ninguna
Matemática II 2 matemática I
Hasta ahí todo va bien, yo lo que quiero es hacer un select que m muestre:
1- Las materias de la tabla pemsum excepto aquellas ya aprobadas por el alumno cedulaal="11000000", es decir mostraría todas las materias de tabla pemsum excepto matemática I e ingles que ya aparecen aprobadas en la 1era tabla.
Y 2- que me muestre las materias cuyas prelaciones este ya aprobadas es decir: que si el alumno cedulaal="12000000" no puede aparecer matemática II ya que este no ha aprobado la I.
Espero haberme hecho entnder. Gracias de antemano

1 Respuesta

Respuesta
1
select materia from pemsum where materua not in (select materia from registro where cedula = "1100000")
amigo ese querry del segundo no se puede realizar con tus datos, por que no tengo una tabla que me diga que ya aprobo o que no a aprobado
Saludos enviame bien eso y te sigo ayudando ...
Hola amigo experto muchas gracias m sirvió bastante el código, yo había intentado de todas las maneras y nada muchas gracias.
Con respecto a lo de las prelaciones m dices que no tengo suf, información para realizar dicha consulta.. ¿qué harías tu en ese caso?
Por ejemplo que me muestre las materias cuyas prelaciones este ya aprobadas es decir: que si el alumno cedulaal="12000000" no puede aparecer matemática II ya que este no ha aprobado la I.
Las materias aprobadas por los alumnos son aquellas que se encuentran en la tabla1 que t mostré.
Agregando que solo puedo utilizar esas 2 tablas ya existentes. Pero si puedo agregarle campos si es necesario.
Espero haberme hecho entnder. Gracias de antemano
Mmm bueno mira el problema es que no tienes una tabla que indique si ya gano la materia o no, ¿por ejemplo la cedula "120000" pudo haber ingresado a mateI pero no la gano como sabrás si la gano o no?
Necesitas otra tabla, diseñala y te ayudo
Ok lo que pasa es que yo asumo que las materias que aparecen en la primera tabla que t mostré son las que ya el alumno ha aprobado y las que no aparecen es porque no las que aprobado.
Pero igual amigo seguí tu recomendación y hice otra tabla la tabla materias esta tiene los sig campos:
cedulaal          !         materia         !       status
12000000               matematica             aprobada
y sigo teniendo la tabla llamada pemsum
materia             trimestre               prelacion
matematica  I          1                     ninguna
Geometría                1                     ninguna
ingles                      1                       ninguna
programacion          1                      ninguna
matematica II          2                      matematica I
aja ahora como hago para q m muestre las materias q puede cursar el alumno 12000000 o el q desee buscar, y muestre las materias q no a visto, las q le prelan a las q a aprobado o no muestre las q le prelan a las q no a aprobado..
Saludos y de nvo gracias...
Bueno entonces esto aria yo
select materia , trimestre form pemsum where prelacion = "ninguna" union ;
select a.materia , a.trimestre from pemsum a inner join tabla_donde_dice_status b on ;
a.materia = b.materia where status = "aprobada" into cursor cursor_a_inscribir
brow
Bueno así haría yo el querry.
Hola amigo experto, el código m da un error de sintaxis en donde dice union; y cuando pruebo la otra parte del código m da otro error en inner join.
Adicional no veo que en el código tomes en cuenta la cedula del alumno dado a que en esa tabla habrán registros de varios alumnos de distintas cedulaal..
Igual estoy investigando esas sentencias que escribist en el código para ver lo que es cada una ya que mi conocimiento de sql es muy básico...
Gracias de nvo
Es que penc que estabas programando en visual fox pro jajajaja y por eso te mande ese código, pero bueno en donde programas, así te ayudo mejor ...
jajaja tranquilo, lo que necesito es lo que t comente anteriormente búsqueda en mysql.
Tu m ayudaste con un código que m muestra todas materias que el alumno no ha aprobado. De la tabla registro(todas las materias que estén en esta tabla registro son las que los diferentes alumnos han aprobado) y la tabla pemsum están todas las materias de la carrera que el alumno cursa.
La sig tabla registro(materias aprobadas por diferentes alumnos identificados por el campo cedulaal):
Periodo ! cedulaal ! Materia ! Estatus
Abril 11000000 matemática I aprobada
Abril 11000000 ingles aprobada
Abril 12000000 programación aprobada
Tengo otra tabla llamada pemsum
Materia trimestre prelación
Matemática I 1 ninguna
Geometría 1 ninguna
Ingles 1 ninguna
Programación 1 ninguna
Matemática II 2 matemática I
tu m pasast este código q m funciono perfectamente:
select materia from pemsum where materua not in (select materia from registro where cedula = "1100000")
Ese código m muestra en mi sistema en un droplist las materias que el alumno no ha aprobado (cosa que esta bien por una parte) el problema es que ay materias que prelan y si yo utilizo el código anterior m muestra algo como así:
En el droplist de mi sistema : matemática II
                                              Matemática III
                                                    OTRAS
es decir necesito en el código que m pasast agregarle alguna condición de que : si el nombre de la prelación de alguna materia en la tabla pemsum esta en la tabla registro materia, muestre el nombre de la materia sino no.
Para que m retorne el el droplist de mi sistema
en el droplist: matemática II (porque no la ha aprobado y no muestra matemática III porque le prela a la dos)
Gracias y yo uso power builder con sentencias sql y la base de datos esta en appserv
select a.materia from pemsum a where materua not in (select materia from registro where cedula = "1100000") and materia in (select materia from registro where materia = "aprobada" and materia = a.materia)
Espero que te sirva sino te sirve escribe nuevamente lo are en sql ... jajaja

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas