Select IF Case
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.
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
Curtidas 0
Respostas
Rodolpho123
17/07/2006
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
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
GOSTEI 0
Razielra
17/07/2006
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:
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.
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.
GOSTEI 0
Rodolpho123
17/07/2006
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?
GOSTEI 0
Razielra
17/07/2006
eu entendi sim, é q eu só queria tentar outra solução sem ter que ascrentar outra tabela.
Valeu, Obrigado.
Valeu, Obrigado.
GOSTEI 0
Xtreme
17/07/2006
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!
GOSTEI 0
Razielra
17/07/2006
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.
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.
GOSTEI 0