2012-05-03 45 views
0

有人可以幫助我得到正確的語法來獲得我需要的結果嗎?在下面的查詢中,子查詢獲得兩個課程(A和B)。整個查詢獲取它們被保存的時間。但是,我只想要兩個階級有共同的時期。Oracle SQL:需要語法來減少查詢結果

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; 

子查詢中的兩個類是多個句點,但句號4是他們都有共同的唯一時期。我如何得到這個結果?

結果是:1,2,4,7

我需要:4

下面是含在查詢中使用的字段的表結構。

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 
+0

您需要更詳細地解釋列值,因爲我找不出它們的意思...... – MarioDS

+0

您可以發佈您的表格結構嗎? –

+0

start_yy,school和class_cd字段屬於外部查詢中的哪個表 –

回答

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; 

IIND解決方案:

前綴在三個字段中的表名,其中在下面的查詢子句。

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; 
+0

我可以使用左連接創建SQL,如果您在表名稱的字段中添加了您發佈的查詢中的所有字段。這將更具可讀性。 –

+0

對不起,結果沒有顯示格式。它是行號,類,節和句號 –

+0

start_yy,school和class_cd字段中的外部查詢中的where子句屬於哪個表。 –