2015-11-17 63 views
0

我有以下表格:PostgreSQL的 - 列引用「庫Id」不明確

A(StudentID, Name, Years) 
B(Age, LibraryID) 
C(Years, Grade, LibraryID) 

這是我的代碼讓我煩惱的部分:

c1 cursor for select LibraryID, Age, Grade, Name from A,B,C where b.LibraryID = c.LibraryID and c.Years=a.Years; 

我收到以下錯誤:

column reference "LibraryID" is ambiguous 
+0

嘗試添加的事實每個LibraryID的不同別名 – mfgabriel92

+1

也爲LibraryID在select子句中添加別名前綴,如下所示:'c1 cursor for select b.LibraryID,Age,Grade,Name from A,B,C where b.LibraryID = c.LibraryID and c.Years = a.Years;' – Harsh

+0

@Harsh我不明白爲什麼會出現這種情況。當我們從A,B,C出發,並不是ABC表共同使用它們的共同屬性?然後從那張新表中抽出LibraryID,年齡和年級? – Brandon

回答

1

確實有一個模棱兩可的名字。您的查詢中有兩個LibraryID字段:一個來自表B,另一個來自表C。你只需要指定表選擇一個領域,如:

c1 cursor for select B.LibraryID, Age, Grade, Name 
from A,B,C where B.LibraryID = C.LibraryID and C.Years=A.Years; 

您在from子句中加入了對LibraryID場這些表不會使他們平等的select條款

+0

您能否向我解釋表格如何加入?我的理解是,當我們從A,B,C表述的時候,ABC並沒有將ABC表格連接在一起以共同的屬性出現?然後從那張新表中抽出LibraryID,年齡和年級?所以這就是爲什麼我不明白爲什麼我們需要聲明B.LibraryID而不是僅僅是LibraryID。 – Brandon

+0

@Brandon。我的意思是用SQL語言來加入。從某種意義上說,現代SQL引擎在內部並不區別於''select' *'從''''''''''''''''''''''''''' 'A.f1 = B.f2「。 – Serge