@Sinnbeck
this is my original query
SELECT
access_lists_visitors.id AS access_list_id,
access_lists_visitors.timetable_visitor_id,
access_lists_visitors.register_visitor_id,
access_lists_visitors.created_at,
access_lists_visitors.updated_at,
access_lists_visitors.check_in,
access_lists_visitors.check_out,
access_lists_visitors.register_computer_visitor_id,
visitors.nombre_visitante,
visitors.tipo_de_identificacion,
visitors.id_identificacion,
visitors.detalles,
visitors.employee_id,
visitors.nombre_empleado,
visitors.credencial,
visitors.id_ur,
visitors.ur,
visitors.unidad_responsable,
timetables_visitors.fecha,
checks_computer.checkin_total
FROM
access_lists_visitors
INNER JOIN
(SELECT
register_visitors.id AS register_visitor_id,
UPPER(
CONCAT(
register_visitors.nombre,
' ',
register_visitors.apellido_paterno,
' ',
register_visitors.apellido_materno
)
) AS nombre_visitante,
register_visitors.tipo_de_identificacion,
register_visitors.id_identificacion,
register_visitors.detalles,
register_visitors.employee_id,
employees.nombre AS nombre_empleado,
employees.credencial,
responsible_units.id AS id_ur,
responsible_units.ur,
responsible_units.unidad_responsable
FROM
register_visitors
INNER JOIN employees ON employees.id = register_visitors.employee_id
INNER JOIN responsible_units on responsible_units.id = employees.responsible_unit_id)
AS visitors ON access_lists_visitors.register_visitor_id = visitors.register_visitor_id
inner join timetables_visitors on timetables_visitors.id = access_lists_visitors.timetable_visitor_id
left join (
SELECT
count(*) AS checkin_total,
A.register_visitor_id
FROM
register_computers_visitors A
INNER JOIN register_computers_visitors_access B on A.id = B.register_computers_visitors_id
WHERE
B.check_in :: DATE = '2022-09-06'
AND B.check_out IS NULL
GROUP BY
A.register_visitor_id
) AS checks_computer on visitors.register_visitor_id = checks_computer.register_visitor_id
and access_lists_visitors.check_out is null
where
timetables_visitors.fecha = '2022-09-06';
I've tried this but doesn't work
DB::table('access_lists_visitors')
->select(
'access_lists_visitors.id AS access_list_id',
'access_lists_visitors.timetable_visitor_id',
'access_lists_visitors.register_visitor_id',
'access_lists_visitors.created_at',
'access_lists_visitors.updated_at',
'access_lists_visitors.check_in',
'access_lists_visitors.check_out',
'access_lists_visitors.register_computer_visitor_id',
'visitors.nombre_visitante',
'visitors.tipo_de_identificacion',
'visitors.id_identificacion',
'visitors.detalles',
'visitors.employee_id',
'visitors.nombre_empleado',
'visitors.credencial',
'visitors.id_ur',
'visitors.ur',
'visitors.unidad_responsable',
'timetables_visitors.fecha',
'checks_computer.checkin_total')
->join(
DB::raw("
SELECT
register_visitors.id AS register_visitor_id,
UPPER(
CONCAT(
register_visitors.nombre,
' ',
register_visitors.apellido_paterno,
' ',
register_visitors.apellido_materno
)
) AS nombre_visitante,
register_visitors.tipo_de_identificacion,
register_visitors.id_identificacion,
register_visitors.detalles,
register_visitors.employee_id,
employees.nombre AS nombre_empleado,
employees.credencial,
responsible_units.id AS id_ur,
responsible_units.ur
FROM
register_visitors
"),
function($join) {
$join->on('employees.id','=','register_visitors.employee_id');
$join->on('responsible_units.id','=','employees.responsible_unit_id');
})
->join('timetables_visitors','timetables_visitors.id','=','access_lists_visitors.timetable_visitor_id')
->leftJoin(DB::raw('(SELECT count(*) AS checkin_total, A.register_visitor_id FROM register_computers_visitors A INNER JOIN register_computers_visitors_access B on A.id = B.register_computers_visitors_id WHERE B.check_in :: DATE = \'2022-09-06\' AND B.check_out IS NULL GROUP BY A.register_visitor_id) AS checks_computer'),function($join) {
$join->on('visitors.register_visitor_id','=','checks_computer.register_visitor_id')
->whereNull('access_lists_visitors.check_out'); })
->where('timetables_visitors.fecha','=','2022-09-06')
->get();