Oracle SQL: necesita sintaxis para reducir el resultado en la consulta
Frecuentes
Visto 132 veces
0
¿Puede alguien ayudarme a obtener la sintaxis correcta para los resultados que necesito? En la consulta a continuación, la subconsulta obtiene dos cursos (A y B). Toda la consulta obtiene el período en que se llevan a cabo. Sin embargo, solo quiero el período que ambas clases tienen en común.
select m.period
from course
join meets m
using (start_yy, school, class_cd)
join section s
using (start_yy, school, class_cd, section)
where start_yy = '11'
and school = 'MYSCH'
and class_cd in (select cl.class_cd
from crslink cl, linkhead lh
where cl.start_yy = '11'
and cl.school = 'MYSCH'
and cl.seq_number = lh.seq_number)
order by period;
Las dos clases en la subconsulta tienen varios períodos, pero el período 4 es el único período que tienen en común. ¿Cómo obtengo ese resultado?
Los resultados son: 1,2,4,7
necesito: 4
Aquí están las estructuras de la tabla que contienen los campos utilizados en la consulta.
TABLE_NAME,COLUMN_ID,COLUMN_NAME,DATA_TYPE,DATA_LENGTH
COURSE ,1 ,START_YY ,VARCHAR2 ,2
COURSE ,2 ,SCHOOL ,VARCHAR2 ,4
COURSE ,3 ,CLASS_CD ,VARCHAR2 ,10
CRSLINK ,1 ,START_YY ,VARCHAR2 ,2
CRSLINK ,2 ,SCHOOL ,VARCHAR2 ,4
CRSLINK ,3 ,CLASS_CD ,VARCHAR2 ,10
CRSLINK ,4 ,SEQ_NUMBER ,NUMBER ,22
LINKHEAD ,1 ,START_YY ,VARCHAR2 ,2
LINKHEAD ,2 ,SCHOOL ,VARCHAR2 ,4
LINKHEAD ,7 ,SEQ_NUMBER ,NUMBER ,22
MEETS ,1 ,START_YY ,VARCHAR2 ,2
MEETS ,2 ,SCHOOL ,VARCHAR2 ,4
MEETS ,3 ,CLASS_CD ,VARCHAR2 ,10
MEETS ,4 ,SECTION ,VARCHAR2 ,3
MEETS ,6 ,PERIOD ,VARCHAR2 ,2
SECTION ,1 ,START_YY ,VARCHAR2 ,2
SECTION ,2 ,SCHOOL ,VARCHAR2 ,4
SECTION ,3 ,CLASS_CD ,VARCHAR2 ,10
SECTION ,4 ,SECTION ,VARCHAR2 ,3
1 Respuestas
0
select distinct m.period
from course
join meets m
using (start_yy, school, class_cd)
join section s
using (start_yy, school, class_cd, section)
where start_yy = '11'
and school = 'MYSCH'
and class_cd exists (select 1
from crslink cl, linkhead lh
where cl.class_cd =course.class_cd
And cl.start_yy = '11'
and cl.school = 'MYSCH'
and cl.seq_number = lh.seq_number)
order by period;
Segunda solución:
prefije el nombre de la tabla con los tres campos en la cláusula where en la siguiente consulta.
select m.period
from course
join meets m
using (start_yy, school, class_cd)
join section s
using (start_yy, school, class_cd, section)
join
crslink cl on cl.class_cd = class_cd
join
linkhead lh on cl.seq_number = lh.seq_number
where start_yy = '11'
and school = 'MYSCH'
and class_cd
and cl.start_yy = '11'
and cl.school = 'MYSCH'
and cl.class_cd is not null
and lh.seq_number is not null
order by period;
contestado el 03 de mayo de 12 a las 15:05
Puedo crear el sql usando la combinación izquierda si antepone el nombre de la tabla con campos con todos los campos en la consulta que publicó. Eso será más legible. - Romil Kumar jainista
Lo sentimos, los resultados no se muestran formateados. Es número de fila, clase, sección y período - Dan T
campos start_yy , school y class_cd en la cláusula where de la consulta externa a la que pertenece la tabla. - Romil Kumar jainista
La consulta interna está recuperando clases que deben programarse como un enlace por período. La consulta externa son las clases, las secciones y los horarios de las reuniones (es decir, el período). Una clase puede estar disponible en varios períodos; sin embargo, el "enlace" dice que estas dos clases deben programarse en el mismo período. El período 4 es el único período común entre los dos. Necesito 4 para ser el único resultado. - Dan T
Publiqué una edición de mi consulta original con prefijos. Los tres campos que cuestionas conforman la clave de curso y encuentros. ¿Eso responde a tu pregunta, Romil? - Dan T
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql or haz tu propia pregunta.
deberá explicar los valores de la columna con más detalle porque no puedo entender qué significan ... - MarioDS
¿Podrías publicar la estructura de tus tablas? - Alejandro B.
Los campos start_yy, school y class_cd pertenecen a qué tabla en la consulta externa: Romil Kumar Jain
escriba la estructura de la tabla en la publicación. - Romil Kumar Jain