2016-01-23 98 views
0

我在下面的sql代碼中有一個問題。我有一個像這樣的表:學生(st_id,st_fname,st_lname)和訪問(visit_id,st_id,visit_cost)。列模糊定義的錯誤oracle sql

我想要做的是爲每名學生選擇平均值爲500以上的學生,然後選擇st_fname和st_lname。並且我寫了以下代碼:

select avg (v.visit_cost) as average_cost, s.st_fname, s.st_lname 
from  student s 
inner join visitings v on s.st_id=v.st_id 
group by st_id 
having avg(v.visit_cost)>=500; 

在輸出中顯示「列含義不明確」錯誤。如果可能,你能幫我解決這個問題嗎?

+0

哪個表包含'amount_paid'? –

+0

'amount_paid'您沒有使用表別名 –

+0

顯示您的表結構 –

回答

1

由於您沒有回覆評論中的問題,因此我假設amount_paid列來自visitings表格,因爲student表格看起來像維度表格。

column ambiguity錯誤是由於st_id列在兩個表中都有。所以SQL不知道你指的是哪個表st_id。嘗試這個。

select avg (v.visit_cost) as average_cost, s.st_fname, s.st_lname 
from  student s 
inner join visitings v on s.st_id=v.st_id 
group by s.st_id 
having avg(v.amount_paid)>=500; 

見SQLFiddle演示這裏

http://sqlfiddle.com/#!9/93027a/2

+0

這工作,非常感謝你 – Programmer

+0

如果它的工作,那麼請點擊接受答案'答案左側的「滴答」符號,以便可以關閉。謝謝。 – Utsav

+0

對不起,我沒有足夠的聲望,因此點擊打勾時會顯示警告消息。但是,只要我有,我會將其標記爲最佳。再次感謝! – Programmer