Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   pregunta sobre sql "AND c.tipo IN ('T','F','N')" (https://www.clubdelphi.com/foros/showthread.php?t=58768)

dalsim 31-07-2008 02:24:17

pregunta sobre sql "AND c.tipo IN ('T','F','N')"
 
tengo esta sentencia en un reporte (sql) AND c.tipo IN ('T','F','N')

como puedo poner o como seria la sentencia diferente de
AND c.tipo<> ('C,'A')
en la sentencia anterior se me alenta el reporte utilizazo firebird alguna sugerencia

pongo todo el query
SELECT o.codigo, a.existencia, a.ult_costo, a.desc_larga,sum(vd.cantidad) as cantidad,
CAST(SUM(vd.cantidad*vd.precio*(1-vd.descuento/100))
AS numeric(15,4))
AS importe,

CAST(SUM(vd.cantidad*a.ult_costo)
AS numeric (15,4))
AS costo from ventasdet vd
LEFT JOIN ventas v ON vd.venta = v.clave
LEFT JOIN articulos a ON vd.articulo = a.clave
LEFT JOIN comprobantes c ON c.venta = vd.venta
LEFT JOIN codigos o ON (a.clave = o.articulo AND o.tipo='P')
WHERE (v.fecha >= :FechaIni) AND (v.fecha <= :FechaFin)
AND (o.codigo >= :CodigoIni) AND (o.codigo <= :CodigoFin)
AND (v.estatus = 'A')
AND c.tipo IN ('T','F','N') AND (c.estatus='A')
GROUP BY o.codigo, a.existencia, a.desc_larga, a.ult_costo

enecumene 31-07-2008 02:27:01

Hola,

Código SQL [-]
AND c.tipo Not In...

Saludos.

dalsim 31-07-2008 02:28:19

hola
 
no va entre corchetes o parentesis

enecumene 31-07-2008 02:32:01

Cita:

Empezado por dalsim (Mensaje 304623)
no va entre corchetes o parentesis

Código SQL [-]
SELECT o.codigo, a.existencia, a.ult_costo, a.desc_larga,sum(vd.cantidad) as cantidad,
CAST(SUM(vd.cantidad*vd.precio*(1-vd.descuento/100)) 
AS numeric(15,4))
AS importe,

CAST(SUM(vd.cantidad*a.ult_costo)
AS numeric (15,4))
AS costo from ventasdet vd
LEFT JOIN ventas v ON vd.venta = v.clave
LEFT JOIN articulos a ON vd.articulo = a.clave
LEFT JOIN comprobantes c ON c.venta = vd.venta
LEFT JOIN codigos o ON (a.clave = o.articulo AND o.tipo='P')
WHERE (v.fecha >= :FechaIni)  AND (v.fecha <= :FechaFin)
AND (o.codigo >= :CodigoIni) AND (o.codigo <= :CodigoFin)
AND (v.estatus = 'A')
AND c.tipo NOT IN ('C','A') AND (c.estatus='A')
GROUP BY o.codigo, a.existencia, a.desc_larga, a.ult_costo

Saludos.

dalsim 31-07-2008 02:35:13

bueno acabo de modificar el reporte y si efectivamente corre
 
solo que y pense qe esa era la solucion a la lentitud del reporte y no si quito esos AND correo bien el reporte pero no es el caso :( alguna sugerencia amigo)

enecumene 31-07-2008 02:36:48

Una pregunta, ¿esa sentencia genera muchos datos?.

dalsim 31-07-2008 02:40:23

si mira los sig..
 
T=ticket que son bastantitos en unos meses
N=notas
F=facturas
etc.. asique estos reportes los estoy utilizando en un minisuper imaginate arriba de 50 mil regustros en un mes y si se tarda el reporte normal

C=cancelado
A=activos

dalsim 31-07-2008 02:51:58

ahora como puedo medir el tamano de una tabla
 
si puedo saber que tabla es la mas grande quizas empezar primero por filtrar los datos que me interesa por decir solo los A N T F y despues hacer una segunda consulta no se que opines pero si ¿como saber el tamaño de mis tablas independientemente?

RONPABLO 31-07-2008 03:41:30

1. prueba primero en hacer o poner un indice a el campo llamado tipo,
Si sigue lento cambia el in por comparaciones tipo '=' o '<>'
ejemplos
cambia
AND c.tipo IN ('T','F','N')

por
AND (c.tipo = 'T' or c.tipo = 'F' or c.tipo = 'N')
o filtra
AND (c.tipo<> 'C' AND c.tipo<>'A')



Nota... recuerda el indice


La franja horaria es GMT +2. Ahora son las 20:14:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi