2016-11-29 28 views
0

我得到這個錯誤不管我與內做JOIN聲明SQL:內蒙古定義的含糊ORA-00918列JOIN

這裏是我的代碼:

SELECT Package_Code, Description, Duration, Site_Code 
FROM tbl_Holiday_Details 
INNER JOIN tbl_Site_Visted 
ON tbl_Holiday_Details.Package_Code = tbl_Site_Visted.Package_Code 
INNER JOIN tbl_Site_Visted 
ON tbl_Site_Details.Site_Code = tbl_Site_Visted.Site_Code 

我不瞭解什麼是問題。

ps。如果需要的話,我會提供更多的代碼

+0

當兩個表包含具有相同名稱的列,那麼你需要告訴DB哪一個你意思。通過在列之前添加表名來完成。 –

+0

您在至少兩個表格中有「Site_Code」列。你永遠不會在'SELECT'列清單中明確你想要的是哪一個。 –

+0

我一起加入3個表,而tbl_site_visted是tbl_holiday_details和tbl_Site_Details之間的連接 – user3719086

回答

2

眼前的問題是,至少Package_CodeSite_Code在多個表中存在,但你的select沒有指定要從返回數據的表。是的,您知道您正在對這些列執行內部連接,因此返回哪個表的值並不重要,但SQL語法不允許Oracle進行推斷。通常,我會建議您總是將每列都別名,以便清楚表明特定屬性來自哪個表,並且在向具有相同名稱的不同表添加屬性時不會破壞代碼。

SELECT tbl_Holiday_Details.Package_Code, 
     Description, 
     Duration, 
     tbl_Site_Visted.Site_Code 
    FROM tbl_Holiday_Details 
     INNER JOIN tbl_Site_Visted 
      ON tbl_Holiday_Details.Package_Code = tbl_Site_Visted.Package_Code 
     INNER JOIN tbl_Site_Visted 
      ON tbl_Site_Details.Site_Code = tbl_Site_Visted.Site_Code 

將工作假設DescriptionDuration僅在三個表中的一個來定義。我會將別名添加到DescriptionDuration,但我不知道應該使用哪個表。當然,我通常會使用更簡單的別名(例如,tsv代替tbl_Site_Visited),而不是整個表名。

如果你想避免混淆你的專欄,你可以使用USING條款,而不是ON條款

SELECT Package_Code, 
     Description, 
     Duration, 
     Site_Code 
    FROM tbl_Holiday_Details 
     INNER JOIN tbl_Site_Visted 
      USING(Package_Code) 
     INNER JOIN tbl_Site_Visted 
      USING(Site_Code) 
+0

謝謝你的工作就像一個魅力。使用「USING」更容易,更簡單。 – user3719086