眼前的問題是,至少Package_Code
和Site_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
將工作假設Description
和Duration
僅在三個表中的一個來定義。我會將別名添加到Description
和Duration
,但我不知道應該使用哪個表。當然,我通常會使用更簡單的別名(例如,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)
當兩個表包含具有相同名稱的列,那麼你需要告訴DB哪一個你意思。通過在列之前添加表名來完成。 –
您在至少兩個表格中有「Site_Code」列。你永遠不會在'SELECT'列清單中明確你想要的是哪一個。 –
我一起加入3個表,而tbl_site_visted是tbl_holiday_details和tbl_Site_Details之間的連接 – user3719086