Si entiendo bien (es que el término
correlativa no me es familiar) la tabla
correlativas almacena las materias que deben ser aprobadas para determinado curso. Así, si por ejemplo
materias
Código:
codigo | nombre
-------+-----------------
... | ...
-------+-----------------
84 | "Programación 2"
-------+-----------------
... | ...
-------+-----------------
La tabla
correlativas podía contener las entradas
Código:
codigo1 | correlativa
--------+------------
84 | 75
--------+------------
84 | 63
--------+------------
84 | 12
--------+------------
indicando que las materias con códigos 75, 63 y 12 deben ser aprobadas para poder cursar "Programación 2".
¿Es así?
Bueno, de ser así, fíjate que lo que tú quieres listar
no son materias sino correlativas, esto es, no estás listando registros de la tabla
materias sino de la tabla
correlativas, de manera que una primera aproximación sería:
Código SQL
[-]
select
correlativas.correlativa
from correlativas
where
correlativas.codigo1 = 84
Pero me parece que tú quieres especificar la materia en el
where mediante su nombre y no su código. Ahí es donde entraría el
join:
Código SQL
[-]
select
correlativas.correlativa
from correlativas
left join materias
on materias.codigo = correlativas.codigo1
where
materias.nombre = "Programación 2"
Y ya para que te presente los nombres correspondietes a las correlativas listadas en lugar de su código simplemente pones:
Código SQL
[-]
select
materias.nombre
from correlativas
left join materias
on materias.codigo = correlativas.codigo1
where
materias.nombre = "Programación 2"
En fin, te lo estoy diciendo conforme lo voy pensando y no lo he comprobado pero puedes intentarlo.
// Saludos