Ошибка SQL неоднозначного столбца при использовании объединенного поля - PullRequest
1 голос
/ 07 сентября 2011

Я создаю приложение в CakePHP. У меня есть 2 модели: - Проект - пользователь

Модель проекта имеет различные отношения к пользовательской модели, одна для создателя, одна для последнего редактора и одна для менеджера. Это отлично работает.

Затем я добавляю в модель User виртуальное поле с именем name, которое называется CONCAT (first_name, '', last_name). Он объединяет имя и фамилию в поле общего имени, которое используется во всем приложении.

После этого я получаю ошибки SQL, говорящие, что столбец first_name является неоднозначным. Это связано с тем, что в запросе псевдоним Creator, Manager и т. Д. Не используется в поле CONCAT.

Есть идеи, как этого избежать?

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Отображение точных запросов должно помочь решить эту проблему.Но если вы объединяете 2 таблицы, и они обе имеют столбец с одинаковым именем.вы должны ссылаться на столбец с помощью TableName.ColumnName, например, так:

Select Table1.Column1 AS someColumn, Table2.Column1 AS SomeOtherColumn
FROM Table1
INNER JOIN Table2 
ON Table1.ID = Table2.Table1ID
WHERE Table1.ID = 3

Вы можете сократить это, указав псевдонимы таблиц следующим образом.

Select T1.Column1 AS someColumn, T2.Column1 AS SomeOtherColumn
FROM Table1 AS T1
INNER JOIN Table2  AS T2
ON T1.ID = T2.Table1ID
WHERE T1.ID = 3
1 голос
/ 06 октября 2011
0 голосов
/ 07 сентября 2011

Попробуйте указать, из какой таблицы столбец first_name. Примерно так:

CONCAT(table1.first_name,'',table1.last_name) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...