SQL Server Performance

Problemas con el <>

Discussion in 'Preguntas sobre SQL Server en Español.' started by fjac_pe, Jan 3, 2005.

  1. fjac_pe New Member

    La siguiente consulta tiene un problema, quiero listar todos los registros que esten activos, que pertenezcan al centro de costo 300 y que su bloque sea diferente a 140, su familia diferente a 1 y su operacion diferente a 1, lo ejecuto y no salen registros ya que en el resultado que deberia darme, por lo menos uno de ellos coincide que su campo es el valor que discrimino, es mas, todos tiene la operacion con 1, por eso no aparece, supuestamente la consulta excluiria a todos menos a los que coincidan.

    Select tickets.OrdeTrab_codi, tickets.OrdCort_codi, tickets.Esti_codi, tickets.Surt_codi,
    tickets.Prendes_codi, tickets.colo_codi, tickets.tall_codi, tickets.paqu_codi,
    tickets.cant_paqu, tickets.tick_codi, tickets.tick_leid, tickets.Secu_Oper,
    tickets.Cenc_codi, tickets.Bloq_codi, tickets.Fami_codi, tickets.Oper_codi,
    tickets.Estu_codi, tickets.tick_Tstd,
    esti_desc, colo_desc, tall_desc, bloq_desc, oper_desc, cenc_desc
    from tickets
    inner join Estilos
    on Tickets.Esti_codi = Estilos.Esti_codi
    inner join bdcomun..Color color
    on color.colo_codi = tickets.colo_codi
    inner join bdcomun..tallas tallas on
    tallas.tall_codi = tickets.tall_codi
    inner join Bloques on
    bloques.cenc_codi = tickets.cenc_codi and
    bloques.bloq_codi = tickets.bloq_codi
    inner join Operaciones on
    operaciones.cenc_codi = tickets.cenc_codi and
    operaciones.bloq_codi = tickets.bloq_codi and
    operaciones.Fami_codi = tickets.Fami_codi and
    operaciones.oper_codi = tickets.Oper_codi
    inner join Cencos on cencos.cenc_codi = tickets.cenc_codi
    where Tick_Elim=0 and tickets.cant_paqu>0
    and Tickets.OrdCort_codi = '04-004573'
    and Tickets.Cenc_codi = '300' and
    Tickets.Bloq_codi <> '140' and
    Tickets.Fami_codi <> '1' and
    Tickets.Oper_codi <> '1'
    Order by Tickets.Cenc_codi, Tickets.paqu_codi, Tickets.Secu_Bloq, Tickets.Secu_Oper

    Si cambio lo siguiente
    Tickets.Bloq_codi <> '140' and
    Tickets.Fami_codi <> '1' and
    Tickets.Oper_codi <> '1'
    por
    (Tickets.Bloq_codi <> '140' or
    Tickets.Fami_codi <> '1' or
    Tickets.Oper_codi <> '1')
    sale todo tal como quiero, pero el problema es parametrizar mi store,ya que este funciona de acuerdo a lo que deseo y cambia el <> por = o por un in ('140','120') digamos, porque no sale conlo incial si la logica dice que seleccione todo menos lo que sea totalmente diferente a lo parametrizado?.


    Muchas Gracias de antemano


    Jesus Aguilar
  2. c_maldon Member

    Que pasaria si usas:

    NOT (
    Tickets.Bloq_codi = '140' and
    Tickets.Fami_codi = '1' and
    Tickets.Oper_codi = '1'
    )

    en lugar de:

    Tickets.Bloq_codi <> '140' and
    Tickets.Fami_codi <> '1' and
    Tickets.Oper_codi <> '1'

    Tal vez sea mas facil de parametrizar.
    Cuando te piden distinto usas el = pero negas todo con NOT.

Share This Page