I want to obtain the books without repeating that there is in the table book but if they are not already added to the table lineapedido with the client that is making the query. Instead of that, with the following code I get the books that are in the lineapedido table that of course, are repeated.
$libros=DB::table('libro as l')
->join('autor as a', 'l.lib_autor_id', '=', 'a.id_autor')
->join('generoartistico as ga', 'ga.id_generoartistico', '=', 'a.atr_genero_artistico_id')
->join('generoliterario as gl', 'gl.id_generoliterario', '=', 'l.lib_genero_literario_id')
->join('lineapedido as lp', 'lp.lpe_libro_id', '=', 'l.id_libro')
->join('pedido as ped', 'ped.id_pedido', '=', 'lp.lpe_pedido_id')
->join('cliente as cli', 'cli.id_cliente', '=', 'ped.ped_cliente_id')
->select('l.id_libro', 'l.lib_no', 'l.lib_titulo', 'l.lib_direccion_web', 'l.lib_fecha_creacion',
'l.lib_precio','l.lib_activo','a.atr_nombre_artistico as autor', 'gl.gl_nombre as generoliterario',
'ga.ga_nombre as generoartistico', 'a.id_autor')
->when($filteredQuery, function($q) use ($query, $gArt, $gLit, $usuario_actual){
$q->where('lib_titulo', 'LIKE', '%'. $query . '%');
$q->where('id_generoartistico', '=', $gArt);
$q->where('id_generoliterario', '=', $gLit);
$q->where('lib_activo', '=', '1');
$q->whereNotIn('id_cliente', function($query){
$query->select('ped_cliente_id')->from('pedido');
});
})->get();
This would be the query you would want:
SELECT 'libro'.*, 'autor'.'atr_nombre_artistico', 'generoartistico'.'ga_nombre', 'generoliterario'.'gl_nombre'
FROM 'libro'
INNER JOIN 'autor' ON 'autor'.'id_autor'='libro'.'lib_autor_id'
INNER JOIN 'generoartistico' ON 'generoartistico'.'id_generoartistico'='autor'.'atr_genero_artistico_id'
INNER JOIN 'generoliterario' ON 'generoliterario'.'id_generoliterario'='libro'.'lib_genero_literario_id'
INNER JOIN 'lineapedido' ON 'lineapedido'.'lpe_libro_id'='libro'.'id_libro'
INNER JOIN 'pedido' ON 'pedido'.'id_pedido'='lineapedido'.'lpe_pedido_id'
INNER JOIN 'cliente' ON 'cliente'.'id_cliente'='pedido'.'ped_cliente_id'
WHERE $usuario_actual->u_cliente_id NOT IN (SELECT 'pedido'.'ped_cliente_id' FROM 'pedido')
GROUP BY 'libro'.'id_libro';
Would anyone know how to put that query in laravel?