Saltar al contenido

Laravel Eloquent con dos “WHERE NOT IN” en subconsulta

Mantén la atención ya que en este tutorial encontrarás el hallazgo que buscas.

Solución:

En lugar de ejecutar 3 consultas diferentes, puede usar como se muestra a continuación,

DB::table('delivery_sap')
->whereNotIn('cust', function ($query) 
        $query->select('cust_name')->from('customer');
    )
->whereNotIn('cust_no', function ($query) 
        $query->select('cust_code')->from('customer');
    )
->select('cust', 'cust_no')
->distinct('cust')
->get();

Este código dará exactamente la misma consulta que se hace en la pregunta, para verificar la consulta, use el siguiente código

DB::table('delivery_sap')
->whereNotIn('cust', function ($query) 
        $query->select('cust_name')->from('customer');
    )
->whereNotIn('cust_no', function ($query) 
        $query->select('cust_code')->from('customer');
    )
->select('cust', 'cust_no')
->distinct('cust')
->toSql();

La salida será,

select distinct `cust`, `cust_no` from `delivery_sap` 
where `cust` not in (select `cust_name` from `customer`) 
and `cust_no` not in (select `cust_code` from `customer`)

Prueba algo como esto:

DB::table('delivery_sap')
    ->whereNotIn('cust', DB::table('customer')->pluck('cust'))
    ->whereNotIn('cust_no', DB::table('customer')->pluck('cust_no'))
    ->select('cust', 'cust_no')
    ->groupBy('cust', 'cust_no')
    ->get();

Si para ti ha resultado provechoso este artículo, agradeceríamos que lo compartas con otros programadores así contrubuyes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *