Как получить последнюю обновленную запись с FIND_IN_SET в laravel? - PullRequest
0 голосов
/ 27 января 2019

Я использую find_in_set с моим запросом, чтобы получить данные из поля через запятую. Но это показывает мне ошибку.

$results = DB::select("SELECT basic.updated_at,basic.updated_by,,ccbi.team_group_id,basic.id
FROM basic_info as  basic 
INNER JOIN emp_info  as  emp_details 
ON basic.emp_master_id =  emp_details.emp_id
WHERE basic.id IN (SELECT basic.id FROM basic_info as basic WHERE basic.updated_at = (SELECT MAX(basic.updated_at) FROM basic_info as basic)) AND basic.team_id =  '1' AND ('FIND_IN_SET(?,emp_details.emp_grp)' , '18')   ORDER BY basic.id DESC LIMIT 1");

запрос выше показывает мне ошибку:

Cardinality violation: 1241 Operand should contain 1 column(s)

Если я удалю AND ('FIND_IN_SET(?,emp_details.emp_grp)' , '18'), эта часть вернет правильный результат.

1 Ответ

0 голосов
/ 27 января 2019

В вашем запросе было несколько опечаток.Вместо того, чтобы добавлять все в DB::select(), я также немного очистил ваш запрос:

return DB::table('basic_info')
    ->select('basic_info.updated_at', 'basic_info.updated_by', 'basic_info.id')
    ->join('emp_info', 'basic.emp_master_id', 'emp_info.emp_id')
    ->whereRaw("basic_info.id IN (SELECT basic_info.id FROM basic_info WHERE basic_info.updated_at = (SELECT MAX(basic_info.updated_at) FROM basic_info) AND basic_info.team_id =  '1' AND FIND_IN_SET('18',emp_details.emp_grp) ORDER BY basic_info.id DESC LIMIT 1)")
    ->get();

Подойдет ли вам следующее?

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