Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

PlasticHeart's avatar

How I can make a query with 2 joins

I want to know how I can make a query with this structure in Query Builder

SELECT

FROM

    INNER JOIN 
(SELECT

    UPPER(
        CONCAT(

            ' ',

            ' ',

        )
    ) AS 
FROM

    INNER JOIN 
    INNER JOIN )
	 AS 
	 inner join    
    left join (
        SELECT
            count(*) AS 
        FROM

            INNER JOIN 
        WHERE

        GROUP BY

    ) AS 
where

I've tried this but I get SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "SELECT" LINE 2: SELECT

 DB::table()
        ->select()
        ->join(
            DB::raw("
            SELECT
                UPPER(
                    CONCAT(

                        ' ',

                        ' ',

                    )
                ) AS 
            FROM

            "),
            function($join) {
                    $join->on();
                    $join->on();
            })
        ->join()
        ->leftJoin(DB::raw('(SELECT count(*) AS ),function($join) {
            $join->on()
        ->whereNull(); })
        ->where()
        ->get();   
0 likes
3 replies
Sinnbeck's avatar

That original query is really weird. Are you sure it's working?

AS 
	 inner join    ??

//and
AS 
where

Can you explain it?

You can probably just do this

DB::select('SELECT

FROM

    INNER JOIN 
(SELECT

    UPPER(
        CONCAT(

            ' ',

            ' ',

        )
    ) AS 
FROM

    INNER JOIN 
    INNER JOIN )
	 AS 
	 inner join    
    left join (
        SELECT
            count(*) AS 
        FROM

            INNER JOIN 
        WHERE

        GROUP BY

    ) AS 
where');
Sinnbeck's avatar

If it's not the actual query, please post it. Reading a query with half of the code missing is impossible

PlasticHeart's avatar

@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();  

Please or to participate in this conversation.