2015-07-05 82 views
1

我有三個表,我想查詢te選擇教師姓名和每個教師保留的班級數。Oracle SQL連接三個表並逐列

老師:

| idt | name | 

類:

| idc | name | 

儲備:

| idc | idt | 

我的查詢:

select 
    t.name, count(distinct(r.idc)) 
    from 
    teacher t 
    join 
    reserve r 
    on 
    r.idt = t.idt 
    join 
    class c 
    on 
    c.idc = r.idc 
    group by r.idc 

當我運行此我得到的跟隨着錯誤:not a group by expression.

+1

您應該是額外的聚合函數的選擇列來分組(在這種情況下COUNT)。嘗試按t.name分組。 –

+1

'按t.name'分組。 「group by」字段應該與「select」中的字段匹配。 –

回答

2

group by子句需要包含從select聲明所有的非聚集列;在你的情況下,它應該是t.name。另外,distinct不是函數,而是關鍵字,不應該有括號。

select 
    t.name, 
    count(distinct r.idc) as number_of_classes 
from 
    teacher t 
join 
    reserve r on r.idt = t.idt 
join 
    class c on c.idc = r.idc 
group by 
    t.name 
+0

謝謝你.. @jpw –