SQL 能否更準確地抽取任教老師

本文由 rockfulam 在 2021-02-19 發表於 "WebSAMS 討論區" 討論區

  1. 55090821

    rockfulam
    Expand Collapse

    文章:
    99
    讚:
    0
    於“https://cdr.websams.edb.gov.hk/模組資料/學生成績/常用SQL/”
    20. 抽取 各科成績(包括分卷) 及 相關任教老師

    但抽取的老師特別是跨班別老師,會所有老師都一並顯示,能否只顯示各分組的老師?
    因為在跨班別裡面設定,需要把老師都加入去,不同分卷都設定了不同老師
    但最後抽取卻全部老師都會出現
     
    #1 rockfulam, 2021-02-19
  2. 58521906

    edb-catherinewschan
    Expand Collapse

    文章:
    184
    讚:
    0
    其實我不太了解你的問題,但我嘗試把老師分行列出,看看能否解決你的問題。
    你試試以下的SQL,如果仍然有問題,請與校主聯絡作進一步跟進。

    select
    b.timeseq '考績',
    a.classcode '班別',
    a.classno '班號',
    a.chname '姓名',
    a.enname 'Name',
    c.en_des 'Subject',
    c.ch_des '科目',
    b.sysscore '成績',
    d2.ch_des '分卷科目',
    d1.sysscore '分卷成績',
    (case when e.CROSSSUBJGRP is null then h.name_chi else j.name_chi end) '任教老師',
    (case when e.CROSSSUBJGRP is null then h.name_eng else j.name_eng end) 'Teacher'
    from wsadmin.vw_stu_lateststudent a
    left outer join wsadmin.tb_asr_subjassessdata b on a.suid=b.suid and a.schlvl=b.schlevel and a.schsess=b.schsession and a.classlvl=b.classlevel and a.schyear=b.schyear and a.stuid=b.stuid and b.timeseq=?
    left outer join wsadmin.tb_hse_common c on a.suid=c.suid and b.subjcode=c.code_id and c.tb_id='SBJ'
    left outer join wsadmin.TB_ASR_SUBJCOMASSESSDATA d1 on a.SUID = d1.SUID and a.SCHLVL = d1.SCHLEVEL and a.SCHSESS = d1.SCHSESSION and a.SCHYEAR = d1.SCHYEAR and a.STUID = d1.STUID and b.SUBJCODE = d1.SUBJCODE and b.TIMESEQ = d1.TIMESEQ
    left outer join wsadmin.TB_HSE_SBJCMP d2 on d1.SUID = d2.SUID and d1.SUBJCODE = d2.SBJ_CODE and d1.SUBJCOMPCODE = d2.CODE_ID
    left outer join wsadmin.TB_STU_STUSUBJ e on a.suid=e.suid and a.stuid=e.stuid and b.SUBJCODE = e.SUBJCODE and a.STUSCHRECID=e.STUSCHRECID
    left outer join wsadmin.TB_SCH_CLSSUBJTCHR g on a.SUID = g.SUID and a.SCHYEAR = g.SCHYEAR and a.SCHLVL = g.SCHLEVEL and a.schsess = g.SCHSESSION and a.classlvl = g.CLASSLEVEL and a.CLASSCODE = g.CLASSCODE and b.SUBJCODE = g.SUBJCODE and b.MOI = g.MOI
    left outer join wsadmin.VW_ASR_STAFF h on a.SUID = h.SUID and g.STAFFCODE = h.STAFFCODE
    left outer join wsadmin.TB_SCH_DSGSUBJTCHR i on a.SUID = i.SUID and a.SCHYEAR = i.SCHYEAR and a.SCHLVL = i.SCHLEVEL and a.schsess = i.SCHSESSION and e.CROSSSUBJCODE=i.DIVSUBJCODE and e.CROSSSUBJGRP=i.SUBJGRPCODE
    left outer join wsadmin.VW_ASR_STAFF j on a.SUID = j.SUID and i.STAFFCODE = j.STAFFCODE
    where a.schyear=? and a.classlvl=?
    order by a.classlvl, a.classcode, a.classno, c.ch_des
     
    #2 edb-catherinewschan, 2021-02-24
  3. 55090821

    rockfulam
    Expand Collapse

    文章:
    99
    讚:
    0
    這個可能與策劃新學年時的數據設定開始
    不知道以往的操作是否有錯誤,因為策劃新學年複製上年度數據
    跨班別需要加入所有老師,編輯時間表才會出現跨班別的所有老師

    最後跨班別分組就會有所有老師出現

    然後在每個分組,選取任教老師,再選中其任教的分卷,這樣老師才能入分

    根據官方sql , 每次抽取的數據,非跨班別是正常的,但跨班別就會把跨班別的所有老師都加上去
    而不是選取有權入分的老師
    能否提供有權入分的database field name, 有權入分 則老師就是任教此學生
    效果類似{學生成績 > 數據輸入 > 匯出資料,選擇老師}
     

    附件文件:

    • eng.png
      eng.png
      文件大小:
      122.8 KB
      瀏覽:
      25
    #3 rockfulam, 2021-02-25
  4. 55090821

    rockfulam
    Expand Collapse

    文章:
    99
    讚:
    0
    是否要加入TB_SCH_DSGSUBJCOMPTCHR,來抽取入分老師?
     
    #4 rockfulam, 2021-02-25
  5. 58521906

    edb-catherinewschan
    Expand Collapse

    文章:
    184
    讚:
    0
    這個TABLE 是 Cross-class subject component teacher , 跨班別科目任教的老師,你可以用SQL SELECT 某一年的資料來核對一下。
     
    #5 edb-catherinewschan, 2021-03-01
  6. 58521906

    edb-catherinewschan
    Expand Collapse

    文章:
    184
    讚:
    0

    很抱歉,看了頗久仍不太理解你的問題。
    你是否想要一個LIST顯示出某同學在跨班別科目的分組中,是由那個老師任教?
    我在遠早的POST中,找到一個類似的問題,不知是否正是你的問題。
    請你看看以下的
    https://forum.hkedcity.net/index.php?threads/學生選修科名單.144088/#post-348902

    但若果不是你的問題,請你跟校主聯絡一下,他們會轉介到我那邊作進一步了解。
    另外,在WEBSAMS有沒有一些類似REPORT,可供給我看看,方便了解呢?
     
    #6 edb-catherinewschan, 2021-03-01
  7. 55090821

    rockfulam
    Expand Collapse

    文章:
    99
    讚:
    0
    我也有看上面的連結,就是覺得奇怪,這麽多年都無解決這個sql 的問題,裡面的人都有提過
    https://forum.hkedcity.net/index.php?threads/學生選修科名單.144088/#post-348947

    這個仍是不可以!
    其實我校中四至六是分block, 例如:生物科,有block 1, block 2, 可能是兩位老師教,學生只能選一個block!
    我們是用cross class subject設定的,5班學生,都可能有人讀block 1&2, 但最多只有兩選修科!

    以上的SQL, 可以看到學生該兩個選修科,但因為『同一科有兩個block 生物』,由『兩位老師』分別教,所以出左:
    1. 陳大文,bio,a老師
    2. 陳大文,bio ,b老師
    3. 陳大文,geog ,c老師
    4. 陳大文,geog ,d老師

    不過,其實b &d老師未有教陳大文,只是教同級另一個生物及地理block!
    我想要的效果是:
    1. 陳大文,bio,a老師
    2. 陳大文,geog ,c老師

    麻煩哂!
    ps-ncw,2015-07-25

    你們官方提供的sql ,會把一個學生學科所有block 的老師都load 出來,類似這個ps-ncw 所提,陳大文應該只有a 老師 教,
    我會找校主的,只是官方應該檢查下提供的sql 是否過時,上面link 的sql 就更加過時。
    謝謝
     
    #7 rockfulam, 2021-03-04
  8. 58521906

    edb-catherinewschan
    Expand Collapse

    文章:
    184
    讚:
    0
    你好,

    其實SQL沒有分"過時",只是 是否"符合"你的需要,能否抽取合適的資料,但有時一條SQL未必同時滿足中學及小學的情況。希望你能理解。

    我十分讚成你找校主,請你要求校主把你CASE交給我,我想進一步了解你的情況。
    如果研究到一條合適的SQL,日後可以放上CDR作參考之用。

    謝謝
     
    #8 edb-catherinewschan, 2021-03-04