2010-07-12 5 views
8

У меня есть следующий SQL и бросает ошибку Неоднозначное столбца имя «идентификатор»Неоднозначное имя столбца

select tbl_registration.*, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where id = [PARAM]p_id 

Я читал несколько статей по этому вопросу, но не может найти рабочее решение для моего кода. Любая помощь очень ценится.

ответ

21

Ваш ИНЕКЕ идентификатор должен быть более конкретным, включают имя таблицы:

WHERE table.id = [PARAM]p_id 

Если две вещи имеют одинаковое имя, это где шаги неоднозначности в В этом случае несколько таблиц в вашем SQL. содержат столбец «id».

У SQL есть интеллект для устранения неоднозначности имен столбцов, если имя столбца уникально в текущем наборе затронутых таблиц - поэтому большую часть времени вам не нужно префикс имен столбцов с именами таблиц.

+2

Лично я предпочитаю, чтобы всегда указать, какие таблицы поле пришли. Это упрощает техническое обслуживание, особенно при работе со сложными запросами типа отчетов, которые объединяются в десять таблиц differnt. Таким образом, я знаю, откуда взялось поле, если это тот, который дает мне проблему без необходимости искать структуру из десяти таблиц differnt, чтобы узнать, откуда она взялась. – HLGEM

6

Скорее всего, более одной таблицы имеет столбец с именем id; используйте префикс таблицы в разделе where

4

Вы пробовали префикс имени столбца id в предложении where?

2

Это ссылка на «id» в вашем предложении where. Вам нужно указать, какой «идентификатор» этой таблицы он должен фильтровать.

0

я заменил свой код

select *, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id 
from tbl_registration 
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id 
left outer join tbl_users on tbl_registration.email = tbl_users.username 
where your_respective_tblname.id = your_respective_tblname.[PARAM]p_id 
Смежные вопросы