2015-08-01 3 views
3

У меня есть этот запрос в yii2:Yii2 ошибка запроса

SELECT COUNT(*) 
FROM `agencias` 
    LEFT JOIN `responsables` `rsp` 
     ON `agencias`.`responsable` = `rsp`.`responsable_id` 
    LEFT JOIN `receptores` `rec` 
     ON `agencias`.`receptor` = `rec`.`receptor_id` 
WHERE (`nombre` LIKE '%pru%') 
    AND (nombres LIKE "%%" or apellidos LIKE "%%") 

Но я получаю сообщение «Column„Номбр“в том, где положение является неоднозначным» я знаю, как исправить настройки псевдонима для, где эта ошибка но не знаю, как это происходит в yii2 activequery.

Таким образом, вопрос, как я могу установить псевдонимы для условий, где можно получить запрос, как это:

SELECT COUNT(*) 
FROM `agencias` 
    LEFT JOIN `responsables` `rsp` 
     ON `agencias`.`responsable` = `rsp`.`responsable_id` 
    LEFT JOIN `receptores` `rec` 
     ON `agencias`.`receptor` = `rec`.`receptor_id` 
WHERE (`nombre` LIKE '%pru%') as alias1 
    AND (nombres LIKE "%%" or apellidos LIKE "%%") alias 2 
+0

ли вы попробовать добавить '' agencias.' перед тем nombre'? (учитывая, что этот столбец действительно находится в таблице «agencias') – Romain

+0

да, и это не меняет результат, потому что он все еще приносит имя (nombre) agencias и имя (nombre) рецептора, поэтому существует проблема будем бороться. –

ответ

2

Вам необходимо предварить nombre поля в пункте WHERE с правом псевдонима таблицы. Предположим, вы фильтрации на основе nombre поля в responsables, то ваш запрос должен быть:

SELECT COUNT(*) 
FROM `agencias` 
    LEFT JOIN `responsables` `rsp` 
     ON `agencias`.`responsable` = `rsp`.`responsable_id` 
    LEFT JOIN `receptores` `rec` 
     ON `agencias`.`receptor` = `rec`.`receptor_id` 
WHERE (`rsp`.`nombre` LIKE '%pru%') 
    AND (`nombres` LIKE "%%" or `apellidos` LIKE "%%") 
+0

Спасибо, я решил свою проблему! –

Смежные вопросы