2015-04-23 59 views
-5

我有2個表classgrade基本計數查詢

這是在class表樣本行:

C_NAME....C_TIME...F_NAME..C_ROOM...SEMESTER 
INSS300...M5:30....DWIGHT..219BC....FALL11 
INSS300...T5:30....KEEN....216BC....FALL11 
MKT300....M5:30....Lee.....112BC....SP11 
MKT300....W5:30....Lee.....112BC....SP11 
INSS421...T5:30....CORY....212BC....FALL11 
FIN300....TH5:30...KEEN....219BC....FALL11 
INSS300...W5:30....CORY....219BC....FALL11 
INSS300...F5:30....CORY....216BC....FALL11 
INSS422...F5:30....KEEN....219BC....FALL11 

,這是在grade

S_NAME C_NAME  G 
LARRY....INSS300....B 
LARRY....FIN300.....A 
SONY.....INSS300....C 
SONY.....INSS421....C 
GRAY.....INSS300....C 
GRAY.....INSS421....D 
TRUDY....INSS300....B 
DRUM.....INSS421....A 
DRUM.....FIN300.....B 
PURI.....INSS422....C 
APPLE....INSS422....C 
LARRY....INSS422....C 
LARRY....INSS300....B 
SONY.....INSS300....C 
GRAY.....INSS300....C 
TRUDY....INSS300....B 

我的問題,我要回答的樣本數據:

假設這些表位於您的帳戶Ordb002中。您只需將 的所有三個表的權限都讀取給您的組成員Sally,該帳戶的 帳戶是Ordb009。假設你已經給所有表格的 授予Sally讀權限。莎莉希望獲得教師和課程的成績(即A,B,C等) 。爲SALLY寫一個查詢以獲得此計數。

我想出了這個查詢

select cla.f_name 
    , gra.c_name 
    , count(grade) 
    , grade 
from class1 cla 
    , grade1 gra 
where cla.c_name=gra.c_name 
group by cla.f_name 
     , gra.c_name 
     , grade 
order by cla.f_name 
     , gra.c_name; 

這給了我下面的輸出:

F_NAME    C_NAME  COUNT(GRADE) G 
-------------------- ---------- ------------ - 
CORY     INSS300    4 B 
CORY     INSS300    4 C 
CORY     INSS421    1 A 
CORY     INSS421    1 C 
CORY     INSS421    1 D 
DWIGHT    INSS300    2 B 
DWIGHT    INSS300    2 C 
KEEN     FIN300    1 A 
KEEN     FIN300    1 B 
KEEN     INSS300    2 B 
KEEN     INSS300    2 C 
KEEN     INSS422    3 C 

我不知道爲什麼4B和4c是在即將到來輸出的頂部可能性只能是2b和2c。

有什麼建議嗎?

回答

0

這是因爲在類表,你有「重複」行了c_name和f_name,如:

C_NAME C_TIME F_NAME C_ROOM SEMESTER 
--------- -------- ------- ------- -------- 
INSS300 W5:30 CORY 219BC FALL11 
INSS300 F5:30 CORY 216BC FALL11 

在等級表INSS300每一行都將對陣那些行,導致雙計數。因此,如果您的成績表還沒有注意到課程的時間,您將不得不篩選您的班級表,以便每個c_name和f_name只顯示一行。

或者,您可以先將成績表中的行分組,然後將它們返回到類表中,如果您仍然需要顯示兩行(儘管我不認爲這將是正確的方法你試圖解決的問題)。