ambiguous column name sql

150 просмотра

2 ответа

53 Репутация автора

I am using the following query and getting the error, «ambiguous column name ‘area’. I have done some reading and found that having it in the CTE and not group by/order by is the cause of the error. Not in my case, it seems. The end result of this query should appear something such as what is below. Any ideas as to where I need to add/subtract a mention of area?

To give some context, the reason for some of the elements is to have the result set contain a pre-determined list of sizeclassep even if there is no data. For some areas, there is no data. A population of 650 does not allow for some industries. Additionally, there are 29 columns in xyzfirms201701. Area, sizeclassep, ownership, and naicscode are just some of the fields contained in it.

Данные являются конфиденциальными и поэтому, к сожалению, данные не могут быть предоставлены

Ответы (2)

1 плюс

23531 Репутация автора

У вас есть [область] как в союзе, так area=’000003′ и у вас снова в select distinct area from xyzfirms201701 . Какой из них вы на самом деле хотите использовать в качестве «области»? Учитывая, что вы, кажется, хотите только ‘000003’ в конечном результате, затем используйте t0.area (см. Вторую строку ниже).

Если вы используете перекрестное соединение в cte, я предполагаю, что вы хотите, чтобы все строки возвращались, поэтому используйте левое соединение вместо внутреннего соединения (заметьте, я предполагаю, что это)

В настоящее время вы группируете по t2.area, но не включаете в предложение select. Либо пропустите его из группировки, либо включите в предложение select. Обратите внимание, поскольку [область] является частью объединения, оно может быть только тем значением, которое вы указали в CTE, поэтому я предлагаю вам использовать sizeclasseptable.area

редактировать

редактировать 2

Возможно, метод уменьшения количества итераций запроса будет заключаться в расширении группировки на все 3 столбца, используемых для выбора этих данных, а также расширении способа определения предложения where. Существует также другой метод для создания строк SizeClassep с помощью values

1 плюс

106 Репутация автора

У вас есть такое же имя столбца в вашем cte, как и в xyzfirms201701. Вы должны переименовать его в любой из таблиц, чтобы этот запрос работал. Кроме того, вы можете просто создать псевдоним столбца, как показано ниже. Однако перекрестное объединение здесь не имеет смысла, когда вам не нужны никакие столбцы из этой таблицы. Он просто создает дубликаты записей.

Следующее должно работать. Обратите внимание на псевдоним a1 для столбца области.

I have the following SQL and it throws the error Ambiguous column name ‘id’

I’ve read some articles on this, but can’t find a working solution for my code. Any help much appreciated.

5 Answers 5

Your WHERE clause id needs to be more specific, include the table name:

If two things share the same name, this is where the ambiguity steps in. In this case multiple tables in your SQL contain the «id» column.

SQL has the intelligence to disambiguate column names if the column name is unique across the current set of tables being touched — hence most of the time you don’t need to prefix column names with table names.

most likely more than one table has a column named id; use a table prefix in the where clause

Have you tried prefixing the id column name in the where clause?

It’s referring to «id» in your where clause. You need to specify which table’s «id» it should filter.

a ZNKLw d eat R b jmdF y pbjvc OIm F TntWI o Aw r Z g bEaK e KxCB Gk o V f BV r E tXZAF m Th p tHAdW i Q r mbyPG e S s wE : C zxapg B RItfK u XwvOK i s l bd d KAXh n a t QBP C JcqWC i S t W y CAniU

Answer Wiki

“Ambiguous column name” means that you are referencing an attribute or attributes that belong to more than one of the tables you are using in the query, and have not qualified the attribute reference. The SQL engine doesn’t know which one you want.

Suppose you have the following query:

Select employee_name, department_id, department_name

from employee, department

In this example, the “WHERE” clause correctly qualifies ownership of the department_id attributes, but the “SELECT” does not. From which table is that column coming from? The SQL .

Оцените статью