Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[SQL] Consulta gigante SQL en 1 sentencia

Participa en el tema [SQL] Consulta gigante SQL en 1 sentencia en el foro Programación.
Tengo esta consulta en SQL ---- ( SELECT precio_unitario * historia_fichas_productos . cantidad + ( ...

Buscar en este tema:
 
  •  
    #1 [SQL] Consulta gigante SQL en 1 sentencia
    Tengo esta consulta en SQL

    ----

    (SELECT precio_unitario * historia_fichas_productos.cantidad +
    (precio_unitario * alicuota)*historia_fichas_productos.cantidad AS importe,
    tecnicos.cod_tecnico AS cod_tecnico, nombre_tecnico AS tecnico, descripcion_modelo, historia_fichas_productos.cod_ficha AS ficha
    FROM historia_fichas_productos INNERJOIN tecnicos ON historia_fichas_productos.cod_tecnico = tecnicos.cod_tecnico
    INNERJOIN modelos ON modelos.cod_modelo = historia_fichas_productos.cod_modelo
    INNERJOIN articulos ON articulos.cod_nro_serie = historia_fichas_productos.cod_nro_serie
    WHERE(tecnicos.cuenta_producto = 1 or articulos.servicio = 1) AND tecnicos.cod_tecnico = 1 AND modelos.cod_modelo <>-1 AND modelos.cod_modelo <>-2 AND articulos.numero_serie isNULLAND
    historia_fichas_productos.eliminado = 0 AND historia_fichas_productos.fecha_hora_ficha >=parametrovariable AND historia_fichas_productos.fecha_hora_ficha <= parametrovariable2 AND historia_fichas_productos.fecha_hora_ficha IN
    (SELECT max(historia_fichas_productos.fecha_hora_ficha)FROM historia_fichas_productos WHERE historia_fichas_productos.eliminado = 0
    GROUPBY precio_unitario, numero_serie,cod_modelo,tipo_pago, cod_nro_serie)
    GROUPBY historia_fichas_productos.cod_ficha, tecnicos.cod_tecnico, nombre_tecnico, descripcion_modelo, modelos.cod_modelo,
    historia_fichas_productos.cantidad, precio_unitario, alicuota )UNION
    (SELECT precio_unitario * historia_fichas_productos.cantidad +
    (precio_unitario * alicuota) AS importe,
    tecnicos.cod_tecnico AS cod_tecnico, nombre_tecnico AS tecnico, descripcion_modelo, historia_fichas_productos.cod_ficha AS ficha
    FROM historia_fichas_productos INNERJOIN tecnicos ON historia_fichas_productos.cod_tecnico = tecnicos.cod_tecnico
    INNERJOIN modelos ON modelos.cod_modelo = historia_fichas_productos.cod_modelo INNERJOIN articulos ON
    articulos.cod_nro_serie = historia_fichas_productos.cod_nro_serie
    WHERE(tecnicos.cuenta_producto = 1 OR articulos.servicio = 1) AND tecnicos.cod_tecnico = 1 AND modelos.cod_modelo <>-1 AND modelos.cod_modelo <>-2 AND articulos.numero_serie is NOT NULL AND
    historia_fichas_productos.eliminado = 0 AND historia_fichas_productos.fecha_hora_ficha >=parametrovariable AND historia_fichas_productos.fecha_hora_ficha <=parametrovariable2 AND historia_fichas_productos.fecha_hora_ficha IN
    (SELECTmax(historia_fichas_productos.fecha_hora_ficha)FROM historia_fichas_productos WHERE historia_fichas_productos.eliminado = 0
    GROUPBY precio_unitario, numero_serie,cod_modelo,tipo_pago, cod_nro_serie)
    GROUPBY historia_fichas_productos.cod_ficha, tecnicos.cod_tecnico, nombre_tecnico, descripcion_modelo, modelos.cod_modelo,
    historia_fichas_productos.cantidad, precio_unitario, alicuota)
    UNION
    (SELECT precio_unitario * historia_fichas_productos.cantidad +(precio_unitario * alicuota)*historia_fichas_productos.cantidad AS importe,
    fichas.cod_tecnico_retiro AS cod_tecnico, tecnicos.usuario AS tecnico, descripcion_modelo, fichas.cod_ficha as ficha
    FROM fichas INNERJOIN historia_fichas_productos
    ON fichas.cod_ficha = historia_fichas_productos.cod_ficha INNERJOIN tecnicos ON tecnicos.cod_tecnico =
    fichas.cod_tecnico_retiro INNERJOIN modelos ON historia_fichas_productos.cod_modelo = modelos.cod_modelo
    INNERJOIN articulos ON historia_fichas_productos.cod_modelo = articulos.cod_modelo
    WHERE tecnicos.cuenta_servicio = 1 AND cod_tecnico_retiro = 1 AND modelos.cod_modelo =-1
    AND historia_fichas_productos.eliminado = 0 AND historia_fichas_productos.numero_serie is NULL AND historia_fichas_productos.fecha_hora_ficha >=parametrovariable
    AND historia_fichas_productos.fecha_hora_ficha <=parametrovariable2
    AND fecha_hora_ficha IN
    (SELECTmax(fecha_hora_ficha)FROM historia_fichas_productos WHERE
    historia_fichas_productos.eliminado = 0 GROUPBY precio_unitario, numero_serie,cod_modelo,tipo_pago, cod_nro_serie
    )
    GROUPBY fichas.cod_tecnico_retiro, tecnicos.usuario, descripcion_modelo, fichas.cod_ficha, historia_fichas_productos.cantidad, precio_unitario, alicuota )
    UNION
    (SELECT precio_unitario * historia_fichas_productos.cantidad +(precio_unitario * alicuota)*historia_fichas_productos.cantidad AS importe,
    fichas.cod_tecnico_llevo AS cod_tecnico, tecnicos.usuario AS tecnico, descripcion_modelo, fichas.cod_ficha AS ficha
    FROM fichas INNERJOIN historia_fichas_productos
    ON fichas.cod_ficha = historia_fichas_productos.cod_ficha INNERJOIN tecnicos ON tecnicos.cod_tecnico =
    fichas.cod_tecnico_llevo INNERJOIN modelos ON historia_fichas_productos.cod_modelo = modelos.cod_modelo
    INNERJOIN articulos ON historia_fichas_productos.cod_modelo = articulos.cod_modelo
    WHERE tecnicos.cuenta_servicio = 1 and cod_tecnico_llevo = 1 AND modelos.cod_modelo =-2
    AND historia_fichas_productos.eliminado = 0 and historia_fichas_productos.numero_serie isNULLAND historia_fichas_productos.fecha_hora_ficha >=parametrovariable AND historia_fichas_productos.fecha_hora_ficha <=parametrovariable2
    AND fecha_hora_ficha IN
    (SELECTmax(fecha_hora_ficha)FROM historia_fichas_productos WHERE
    historia_fichas_productos.eliminado = 0 GROUPBY precio_unitario, numero_serie,cod_modelo,tipo_pago, cod_nro_serie
    )
    GROUPBY fichas.cod_tecnico_llevo, tecnicos.usuario, descripcion_modelo, fichas.cod_ficha, historia_fichas_productos.cantidad, precio_unitario, alicuota )

    ---

    Necesito al resultado de esta consulta, tratarla como una tabla y ponerla en el FROM de otra consulta, de esta forma

    SELECT sum(importe) as total FROM (/ todo el chorro de consulta anterior / ) GROUP BY cod_tecnico


    Muchas veces puse consulta en los FROM para tratarlos como tablas y no tuve problemas, pero en este caso me tira error y me consta que el primer chorro de consulta funciona bien. Que puede ser?
    Editado por Daidalus - 29.08.2008 11:39 hs. | Motivo: PR
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: Consulta gigante SQL en 1 sentencia

    La única manera de solucionar un error Out of memory es instalando más memoria, o cambiando la consulta para que no use tanta.
    Me gusta este mensaje
  • #3 Re: Consulta gigante SQL en 1 sentencia

    jjajaj menuda consulta te mandaste man!
    Me gusta este mensaje
  • #4 Re: Consulta gigante SQL en 1 sentencia

    Jajaja, aunque tengas memoria... Dudo que te salga como pensaste...

    Y si te anda te felicito, pequeña consulta te mandaste...
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 3 RESPUESTAS
  • 167 VISTAS
  • 4 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB