Hola buenas tengo una consulta donde quiero encontrar si en una tabla llamada "final" es > 0 y me la muestre, pero veo que es poco optimizada y super lenta.
SELECT
articulos.id_encriptado,
articulos.id,
articulos.ref,
articulos.titulo_1,
articulos.descripcion_1,
articulos.precio1 as precio,
articulos.iva_incluido,
articulos.id_plazos_entrega,
articulos.id_dto,
articulos.id_iva,
articulos.comprar
FROM
articulos_subcategorias,
articulos
WHERE
(
articulos_subcategorias.id_articulos = articulos.id &&
articulos_subcategorias.id_categorias ='3' &&
articulos.publicado ='si' &&
articulos.tienda LIKE '%1%' &&
articulos.visualizar='inf' &&
precio1 != 0 &&
(
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '4') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '8') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '9') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '3') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '5') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '10') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '1') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '2') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '7') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '15') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '12') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '14') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '16') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '17') > 0 ||
(SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '13') > 0)
)
)
ORDER BY
articulos.ordenar ASC
LIMIT
0,48
Como se podria hacer que si encuentra en algun almacen > 0 me lo muestre pero sin tantas condicionales || y más optimizada?
Muchísimas gracias