Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2013, 04:56
Avatar de syntex
syntex
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 6 meses
Puntos: 4
Consultar en tabla si hay en almacen > 0

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
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------