SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 - объединяет различные таблицы - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь закодировать это с помощью laravel:

$software = $row['DisplayName0'];
$equipo = $row['Netbios_Name0'];
//echo $software ."</br>";
$sqlconsulta2= "select DISTINCT NOMSOF, TIPLICSOF, TIPIMASOF, IDEMP, NOMEMP, APPEMP, APMEMP from equ,emp 
LEFT JOIN sof
ON sof.NOMSOF = '$software'
where IDEEQU = '$equipo'  and IDEEMP = IDEMP and pueemp = 'Empleado'";

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

 $lichome = DB::connection('mysql')->table('emp')->select('SOF.NOMSOF', 'SOF.TIPLICSOF', 'SOF.TIPIMASOF', 'EMP.IDEMP',
        'EMP.NOMEMP','EMP.APPEMP', 'EMP.APMEMP')
        ->where('pueemp', '=', 'Empleado')
        ->join('equ','EQU.IDEMP', '=', 'EMP.IDEEMP')
        ->whereIn('EQU.IDEEQU', $home->pluck('Netbios_Name0'))
        ->join('sof','NOMSOF', '=', $home->pluck('DisplayName0'))
        ->where('pueemp', '=', 'Empleado')->get();

Кто-нибудь может мне помочь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Сначала вы должны использовать joins, а затем использовать предложения where, а также, используя get().

 $lichome = DB::connection('mysql')
        ->table('emp')->select('SOF.NOMSOF',
                               'SOF.TIPLICSOF',
                               'SOF.TIPIMASOF',
                               'EMP.IDEMP',
                               'EMP.NOMEMP',
                               'EMP.APPEMP',
                               'EMP.APMEMP')
        ->join('equ','EQU.IDEMP', '=', 'EMP.IDEEMP')
        ->join('sof','NOMSOF', '=', $home->get('DisplayName0'))
        ->whereIn('EQU.IDEEQU', $home->pluck('Netbios_Name0'))
        ->where('pueemp', '=', 'Empleado')
        ->where('pueemp', '=', 'Empleado')->get();

Вы должны знать:

pluck() Извлекает все значения для данного ключа

get() Возвращает элемент по заданному ключу. Если ключ не существует, возвращается ноль.

Таким образом, вы можете использовать pluck в whereIn() , но вы не можете использовать его в предложении on в соединении , лучше использовать get().

Итак, вот:

->join('sof','NOMSOF', '=', $home->pluck('DisplayName0'))

Вы делаете что-то вроде:

...
INNER JOIN sof ON nomsof = ['item1', 'item2']

Кроме того, я думаю, что вы должен сделать это так:

->join('sof','sof.NOMSOF', '=', 'equ.SomeID')
0 голосов
/ 23 марта 2020

$ home-> pluck () вернет метод Illuminate \ Support \ Collection

Вместо этого вы должны использовать $ home-> get ($ key)

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