[英]SQL statement is giving me the following error message Ambiguous column name
背景
對於整個JOIN SQL概念,我有點陌生,嘗試編寫一條SQL語句,該語句將根據另一個表中的President ID獲得一個國家的名稱,此后指向另一個包含該國家名稱的表。
表
[主席]
ID | PresidentID | Name | Population Governed
1 3 ME 1,000,000,000
[CountryPopulation]
ID |PresidentID| Population Number| CountryID
1 3 1,000,000,000 12
[國家的名字]
ID | CountryID | CountryName
3 12 USA
問題 :我寫了一條SQL語句,試圖根據總統ID得到國家的名字,但是我的語句顯示錯誤:
列名稱“ PresdientID”不明確。
SQL語句
SELECT
PresidentID
FROM
President A
INNER JOIN
CountryPopulation B ON A.PresdientID = B.PresdientID
WHERE
B.CountryID IN (SELECT CountryName
FROM CountryName
WHERE CountryID = B.CountryID)
SQL Server不確定您要返回A.PresidentID還是B.PresidentID。 即使在這種情況下值相同,也需要指定。
選擇的字段PresidentID
模棱兩可。您需要指定要為PresidentID
提供值的表,如下所示:
Select
A.PresdientID
From President A INNER JOIN
CountryPopulation B ON A.PresdientID = B.PresdientID
WHERE B.CountryID IN (SELECT CountryName FROM CountryName WHERE CountryID = B.CountryID)
編輯
您的問題表明您正在嘗試根據PresidientID
值獲取CountryName
。
如果您知道PresidientID
值,那么我認為您只需這樣做:
DECLARE @PresidientID INT = 3
SELECT cn.CountryName
FROM CountryName cn JOIN CountryPopulation cp ON cn.CountryID = cp.CountryID
WHERE cp.PresidientID = @PresidientID;
也就是說,您的數據庫設計似乎不正確。 似乎周圍散布了許多“ ID”字段。 例如,您的President
表包含ID
字段和PresidientID
字段; 您的CountryName
表也包含一個ID
字段和一個CountryID
字段。 另外,您在多個表中有相同的信息(人口數,人口總數)。
將所有國家/地區屬性放到名為Country
的單個表中會更好嗎? 考慮一下:
CREATE TABLE [Country](
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Population] INT,
[PresidentID] INT -- Foreign Key to president
)
CREATE TABLE [President](
[ID] int IDENTITY(1,1) NOT NULL,
[PresidentName] nvarchar(100) NOT NULL
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.