Fórum Select IF Case #56549

17/07/2006

0

olá, sou novo aqui no forum e já logo de cara meu primeiro post é uma duvida...

por favor, eu tenho a seguinte tabela:

CREATE TABLE teste (
ID INT;
SEMANA CHAR(7)
)

e os seguintes dados:

INSERT INTO teste VALUES (1,´0204000´)
INSERT INTO teste VALUES (2,´0030500´)

minha duvida é:
como eu faço pra saber quais os dias da semana neste campo, sei que posso usar o SUBSTRING para extrair os numeros, mas como mostrar por escrito os dias da semana. Exemplo:
na primeira inserção quero mostrar apenas escrito SEGUNDA E QUARTA, na segunda inserção quero mostrar apenas TERÇA E QUINTA.



obrigado.


Razielra

Razielra

Responder

Posts

19/07/2006

Rodolpho123

Na verdade, a sua estrutura deve mudar.
Deve ser:

tabelaMestre
--------------
IdTbMestre [b:013e5eb856]integer[/b:013e5eb856]
1
IdSemanaDet: [b:013e5eb856]integer[/b:013e5eb856]
1
Descricao: [b:013e5eb856]varchar[/b:013e5eb856]
´Descrição dos primeiros dias da semana´


tabelaDetalheDiaSemana
----------------
IdSemanaDet: [b:013e5eb856]integer[/b:013e5eb856]
1
Semana: [b:013e5eb856]integer[/b:013e5eb856]
2 (Segunda)
3 (Terça)




E aí, com um [b:013e5eb856]join[/b:013e5eb856] vc resolveria o seu problema


Responder

Gostei + 0

21/07/2006

Razielra

só que ao inves de aparecer apenas uma dia da semana a cada registro deverá aparecer mais. por exemplo:

quando eu tenho o registro: [0204000] quero que apareça [Segunda, Quarta].
ou quando tenho: [1030007] quero [Domingo, Terça, Sábado]

eu fiz um select case mais ou mesmo assim:
select
    case substring(tab_aluno.alu_semana from 1 for 1)
        when 1 then ´Domingo´
    end AS dia1,
    case substring(tab_aluno.alu_semana from 2 for 1)
        when 2 then ´Segunda´
    end AS dia2,
    case substring(tab_aluno.alu_semana from 3 for 1)
        when 3 then ´Terça´
    end AS dia3,
    case substring(tab_aluno.alu_semana from 4 for 1)
        when 4 then ´Quarta´
    end AS dia4,
    case substring(tab_aluno.alu_semana from 5 for 1)
        when 5 then ´Quinta´
    end AS dia5,
    case substring(tab_aluno.alu_semana from 6 for 1)
        when 6 then ´Sexta´
    end AS dia6,
    case substring(tab_aluno.alu_semana from 7 for 1)
        when 7 then ´Sabado´
    end AS dia7
from tab_aluno
where tab_aluno.alu_tipo = 1


O problema é que eu terei 7 colunas ao inves de apenas 1.
fiz também uma procedure que retorna o mesmo também, mais não ajudou muito, porque naum sei como usa-la direito.

ai valeu pela ajuda. Obrigado.


Responder

Gostei + 0

23/07/2006

Rodolpho123

Mas nesta estrutura que eu te mostrei, vc pode ter [b:b193494906]N[/b:b193494906] dias da semana. A tabela Pai será a sua referência e a tabela filho, armazenará quantos dias da semana vc desejar, entendeu?


Responder

Gostei + 0

23/07/2006

Razielra

eu entendi sim, é q eu só queria tentar outra solução sem ter que ascrentar outra tabela.


Valeu, Obrigado.


Responder

Gostei + 0

24/07/2006

Xtreme

select coalesce(case when a.semana like ´¬1¬´ then ´Domingo´ end,´´) ||
       coalesce(case when a.semana like ´¬2¬´ then ´Segunda´ end,´´) ||
       coalesce(case when a.semana like ´¬3¬´ then ´Terça´ end,´´) ||
       coalesce(case when a.semana like ´¬4¬´ then ´Quarta´ end,´´) ||
       coalesce(case when a.semana like ´¬5¬´ then ´Quinta´ end,´´) ||
       coalesce(case when a.semana like ´¬6¬´ then ´Sexta´ end,´´) ||
       coalesce(case when a.semana like ´¬7¬´ then ´Sabado´ end,´´)
       Data
from teste a

Bom testa isso ai! Eu fiz aqui e deu certo o unico problema é que traz muitos espaços juntos, pois a contatenaçao nao aceita campos nulos, é preciso algum valor!


Responder

Gostei + 0

13/08/2006

Razielra

opa galera!!, blz?

bom resolvi faze como nosso amigo ai falo... fiz uma tabela com ´pai´, com os dias da semana e tenho um relacionamento N pra N com outra tabela. e eu queria apresentar mais ou menos as informações desta forma:

id_aluno nome_aluno dias_semama
01 João Segunda, Quarta
02 Maria Terça, Quinta

onde tenho então a tabela ALUNO e a tabela SEMANA, com relacionamento N para N. alguem sabe como resolver isso. se for com o JOIN eu não sei como ele funciona, to tentando aprende para vê se consigo faze.


Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar