Databases Querying Relational Databases Joining Table Data with SQL JOIN Queries

Sean McLeskey
Sean McLeskey
2,033 Points

Why am I seeing an "ambiguous column name" error when I'm trying to join tables if the column name is spelled correctly?

I am seeing an "ambiguous column name" error when I'm trying to join tables if the column name is spelled correctly?

2 Answers

KRIS NIKOLAISEN
KRIS NIKOLAISEN
53,693 Points

If you post your SQL it will be easier to help. Are you not including the table names in your join fields? i.e

INNER JOIN Car ON Model.ModelID = Car.ModelID

Multiple columns with the same name need to be distinguished by table name. Otherwise the data engine doesn't know which column in which table you are referring to.

Sean McLeskey
Sean McLeskey
2,033 Points

Hi Kris: Thanks for your response. There are three tables Car, Model, and Make. The confusing thing to me is that the ModelName column only exists in the Model table.

The SQL code that generates the error is below. I have tried variations around this including adding Model.ModelName in place of ModelName.

SELECT MakeName AS "Make Name", ModelName AS "Model Name", VIN, StickerPrice AS "Sticker Price" FROM Make INNER JOIN Model ON Make.MakeID = Model.MakeID, Model INNER JOIN Car ON Model.ModelID = Car.ModelID;

KRIS NIKOLAISEN
KRIS NIKOLAISEN
53,693 Points

I'm not sure how the checker is interpreting this but if you remove

 ,Model

before

INNER JOIN Car ON Model.ModelID = Car.ModelID

you'll end up with the following:

SELECT MakeName AS "Make Name", ModelName AS "Model Name", VIN, StickerPrice AS "Sticker Price" FROM Make INNER JOIN Model ON Make.MakeID = Model.MakeID INNER JOIN Car ON Model.ModelID = Car.ModelID;

which will pass