+ Responder ao Tópico



  1. #1
    Platinum High Blonde Avatar de lemke
    Ingresso
    Sep 2008
    Localização
    Brasília-DF
    Posts
    8.555
    Posts de Blog
    85

    Padrão Criação de regra SQL

    Boa tarde,

    Estou com um pequeno problema e preciso de ajuda:

    Estou criando tipo uma regra no SQL...se alguém for me entregar algo de quinta a quarta, deverei pagar na segunda anterior...

    Por exemplo: tenho a seguinte semana: de 5 a 11 (Quinta a quarta )... o dia de entrega que cair em um desses dias,deverei pagar na segunda anterior, ou seja, dia 2 ...

    D S T Q Q S S
    2 5 6 7
    8 9 10 11

    Qual o problema:

    Fiz a seguinte Query:

    SELECT TOP 1 DATA_CALENDARIO
    FROM CALENDARIO
    WHERE DATA_CALENDARIO < '20090218'
    AND DIA_SEMANA_CALENDARIO = CASE
    WHEN (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 4 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 5 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 6 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 7 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 1 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 2 OR
    (SELECT TOP 1 DIA_SEMANA_CALENDARIO FROM CALENDARIO WHERE DATA_CALENDARIO = '20090218') = 3
    THEN 1 --JOGA PARA A SEGUNDA ANTERIOR
    END
    AND EXISTS (SELECT DATA_CALEND FROM CALEND WHERE DATA_CALEND = '20090218')
    ORDER BY DATA_CALEND DESC


    O problema é: entrar com uma data de 5 a 9, tudo bem, ele traz o dia 2, porém, se eu entrar com 10 ou 11, ele traz o dia 9, sendo que eu quero trazer o dia 2.

    Como que eu poderia fazer???

    Agradeço a quem tiver paciência e puder me ajudar!

    Sds,
    Última edição por lemke; 16-01-2009 às 20:36.

  2. #2

    Padrão

    Operações com datas sempre foram chatas de se tratar e normalmente nem sempre os SGBD's conseguem contemplar tudo que nós queremos fazer de maneira simples com suas implementações do padrão SQL.

    Eu acho que talvez seja melhor controlar isso na sua aplicação, ao invés de no banco. Alguns frameworks e linguagens como Ruby On Rails, CakePHP e PHP já possuem funções para esse tipo de coisa.

    Um abraço!



  3. #3
    Platinum High Blonde Avatar de lemke
    Ingresso
    Sep 2008
    Localização
    Brasília-DF
    Posts
    8.555
    Posts de Blog
    85

    Padrão

    É, eu não gosto de nada que envolva datas ao tratar de DB, é trabalhoso à beça...

    Obrigada pela orientação, acho que ate o final da noite eu vou conseguir resolver...


    Um abraço!
    Última edição por lemke; 23-01-2009 às 18:21.