Re: [oracle_br] Desafio SQL

2014-05-27 Por tôpico Andre Santos andre.psantos...@gmail.com [oracle_br]
Miltão

Blz... :)
Ainda bem que já criaram um ferramental para tratar isso, né?

Na minha humilde opinião, misturaram 2 coisas: tabela de domínio X
codificação considerando vetor de bits.
Deveriam usar uma coisa ou outra.

[ ]

André Santos




Em 27 de maio de 2014 13:19, 'Milton Bastos Henriquis Jr.'
miltonbas...@gmail.com [oracle_br]  escreveu:

>
>
> Beleza André!
>
> Cara, depois da sugestão do Gaudêncio eu fui vasculhar nas funções
> existentes na nossa base, e achei a função pronta!
>
> Já tá pronta e funcionando... outro cara da minha empresa já tinha feito
> (só que ele não me respondeu antes porque tá viajando).
>
> Obrigado!
>
>
> Em 27 de maio de 2014 13:11, Andre Santos 
> andre.psantos...@gmail.com[oracle_br]
>  escreveu:
>
>
>>
>> Miltão
>>
>> Fizeram uma implementação tratando os códigos como posições de "bits"
>> (imaginemos que dentro de um "byte").
>> 0001 [bin] = 1 [dec] --> "Produto vencido"
>> 0010 [bin] = 2 [dec] --> "Produto bloqueado manualmente"
>> 0100 [bin] = 4 [dec] --> "Produto bloqueado para inventário"
>> 1000 [bin] = 8 [dec] --> "Produto bloqueado por avaria"
>>
>> Para conseguir decodificar, pode usar a função BITAND, que faz uma
>> operação "AND" binária nos valores.
>>
>>  Estou meio na correria agora... mas depois poderia tentar montar um
>> exemplo.
>> Talvez algum exemplol na documentação do Oracle já seja útil para seu
>> caso.
>>
>> [ ]
>>
>> André Santos
>>
>>
>>
>> Em 27 de maio de 2014 12:13, Emerson dos Santos Gaudêncio
>> emerson.fen...@gmail.com [oracle_br] escreveu:
>>
>>>
>>>
>>> Milton é possível fazendo um case na query com as variações ou
>>> utilizando uma função que retorne as decrições conforme a situação:
>>>
>>> Exemplo 1:
>>>
>>> create or replace view vw_produto_situacao as
>>> select id_produto, descricao_produto, situacao,
>>> case when
>>>  situacao = 1
>>> then
>>> 'Produto vencido'
>>>   when
>>>  situacao = 2
>>> then
>>> 'Produto bloqueado manualmente'
>>> when
>>>  situacao = 3
>>> then
>>> 'Produto vencido/Produto bloqueado manualmente'
>>> when
>>>  situacao = 4
>>> then
>>> 'Produto bloqueado para inventário'
>>> when
>>>  situacao = 5
>>> then
>>> 'Produto vencido/Produto bloqueado para inventário'
>>> when
>>>  else
>>> 'Produto sem situacao informada'
>>> end descricao_situacao
>>> from tbproduto;
>>>
>>>
>>> Exemplo 2:
>>>
>>> create or replace view vw_produto_situacao as
>>> select id_produto, descricao_produto, situacao,
>>> fnc_get_descricao_situacao(situacao) as descricao_situacao
>>> from tbproduto;
>>>
>>>
>>> Bom acredito que podem existir outras formas , mais ambas poderiam lhe
>>> ajudar.
>>>
>>> Att,
>>> Emerson
>>>
>>>
>>> Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.'
>>> miltonbas...@gmail.com [oracle_br] escreveu:
>>>
>>>

 Bom dia amigos!

 Tenho um probleminha aqui e não sei se existe solução usando SQL.
 Caso alguém consiga resolver, agradeço muito!

 Duas tabelas.

 Primeira tabela: SITUACAO
 A tabela "Situação" tem um campo ID e um campo "Descrição".
 O campo ID é sempre potência de 2:

 ID   Descrição
 1Produto vencido
 2Produto bloqueado manualmente
 4Produto bloqueado para inventário
 8Produto bloqueado por avaria

 Inventei essas descrições acima pra ilustrar o exemplo.

 Numa outra tabela, tabela ESTOQUE, eu tenho um campo
 de Situação. Exemplo:

 ID  Produto   Situação
 1   Cerveja2
 2   Picanha   5
 3   Alcatra 9
 4   Maminha  7

 O campo situação mostra a soma de todos os tipos.
 A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido
 e também está bloqueado para inventário.


 Bom, tudo isso já está implementado e funcionando.

 A minha dúvida vem abaixo

 Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
 bloqueios desse item do estoque concatenados.

 Isso é possível?

 Ficaria assim:

 1  Cerveja  2  Produto bloqueado manualmente
 2  Picanha  5  Produto vencido|Produto bloqueado para inventário
 3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
 4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
 bloqueado para inventário


 É possível fazer isso apenas com uma query para criar uma View?



>>>
>>
>  
>


Re: [oracle_br] Desafio SQL

2014-05-27 Por tôpico 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
Beleza André!

Cara, depois da sugestão do Gaudêncio eu fui vasculhar nas funções
existentes na nossa base, e achei a função pronta!

Já tá pronta e funcionando... outro cara da minha empresa já tinha feito
(só que ele não me respondeu antes porque tá viajando).

Obrigado!


Em 27 de maio de 2014 13:11, Andre Santos andre.psantos...@gmail.com[oracle_br]
 escreveu:

>
>
> Miltão
>
> Fizeram uma implementação tratando os códigos como posições de "bits"
> (imaginemos que dentro de um "byte").
> 0001 [bin] = 1 [dec] --> "Produto vencido"
> 0010 [bin] = 2 [dec] --> "Produto bloqueado manualmente"
> 0100 [bin] = 4 [dec] --> "Produto bloqueado para inventário"
> 1000 [bin] = 8 [dec] --> "Produto bloqueado por avaria"
>
> Para conseguir decodificar, pode usar a função BITAND, que faz uma
> operação "AND" binária nos valores.
>
> Estou meio na correria agora... mas depois poderia tentar montar um
> exemplo.
> Talvez algum exemplol na documentação do Oracle já seja útil para seu caso.
>
> [ ]
>
> André Santos
>
>
>
> Em 27 de maio de 2014 12:13, Emerson dos Santos Gaudêncio
> emerson.fen...@gmail.com [oracle_br] escreveu:
>
>>
>>
>> Milton é possível fazendo um case na query com as variações ou utilizando
>> uma função que retorne as decrições conforme a situação:
>>
>> Exemplo 1:
>>
>> create or replace view vw_produto_situacao as
>> select id_produto, descricao_produto, situacao,
>> case when
>>  situacao = 1
>> then
>> 'Produto vencido'
>>   when
>>  situacao = 2
>> then
>> 'Produto bloqueado manualmente'
>> when
>>  situacao = 3
>> then
>> 'Produto vencido/Produto bloqueado manualmente'
>> when
>>  situacao = 4
>> then
>> 'Produto bloqueado para inventário'
>> when
>>  situacao = 5
>> then
>> 'Produto vencido/Produto bloqueado para inventário'
>> when
>>  else
>> 'Produto sem situacao informada'
>> end descricao_situacao
>> from tbproduto;
>>
>>
>> Exemplo 2:
>>
>> create or replace view vw_produto_situacao as
>> select id_produto, descricao_produto, situacao,
>> fnc_get_descricao_situacao(situacao) as descricao_situacao
>> from tbproduto;
>>
>>
>> Bom acredito que podem existir outras formas , mais ambas poderiam lhe
>> ajudar.
>>
>> Att,
>> Emerson
>>
>>
>> Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.'
>> miltonbas...@gmail.com [oracle_br] escreveu:
>>
>>
>>>
>>> Bom dia amigos!
>>>
>>> Tenho um probleminha aqui e não sei se existe solução usando SQL.
>>> Caso alguém consiga resolver, agradeço muito!
>>>
>>> Duas tabelas.
>>>
>>> Primeira tabela: SITUACAO
>>> A tabela "Situação" tem um campo ID e um campo "Descrição".
>>> O campo ID é sempre potência de 2:
>>>
>>> ID   Descrição
>>> 1Produto vencido
>>> 2Produto bloqueado manualmente
>>> 4Produto bloqueado para inventário
>>> 8Produto bloqueado por avaria
>>>
>>> Inventei essas descrições acima pra ilustrar o exemplo.
>>>
>>> Numa outra tabela, tabela ESTOQUE, eu tenho um campo
>>> de Situação. Exemplo:
>>>
>>> ID  Produto   Situação
>>> 1   Cerveja2
>>> 2   Picanha   5
>>> 3   Alcatra 9
>>> 4   Maminha  7
>>>
>>> O campo situação mostra a soma de todos os tipos.
>>> A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido e
>>> também está bloqueado para inventário.
>>>
>>>
>>> Bom, tudo isso já está implementado e funcionando.
>>>
>>> A minha dúvida vem abaixo
>>>
>>> Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
>>> bloqueios desse item do estoque concatenados.
>>>
>>> Isso é possível?
>>>
>>> Ficaria assim:
>>>
>>> 1  Cerveja  2  Produto bloqueado manualmente
>>> 2  Picanha  5  Produto vencido|Produto bloqueado para inventário
>>> 3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
>>> 4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
>>> bloqueado para inventário
>>>
>>>
>>> É possível fazer isso apenas com uma query para criar uma View?
>>>
>>>
>>>
>>
>  
>


Re: [oracle_br] Desafio SQL

2014-05-27 Por tôpico Andre Santos andre.psantos...@gmail.com [oracle_br]
Miltão

Fizeram uma implementação tratando os códigos como posições de "bits"
(imaginemos que dentro de um "byte").
0001 [bin] = 1 [dec] --> "Produto vencido"
0010 [bin] = 2 [dec] --> "Produto bloqueado manualmente"
0100 [bin] = 4 [dec] --> "Produto bloqueado para inventário"
1000 [bin] = 8 [dec] --> "Produto bloqueado por avaria"

Para conseguir decodificar, pode usar a função BITAND, que faz uma operação
"AND" binária nos valores.

Estou meio na correria agora... mas depois poderia tentar montar um exemplo.
Talvez algum exemplol na documentação do Oracle já seja útil para seu caso.

[ ]

André Santos



Em 27 de maio de 2014 12:13, Emerson dos Santos Gaudêncio
emerson.fen...@gmail.com [oracle_br] escreveu:

>
>
> Milton é possível fazendo um case na query com as variações ou utilizando
> uma função que retorne as decrições conforme a situação:
>
> Exemplo 1:
>
> create or replace view vw_produto_situacao as
> select id_produto, descricao_produto, situacao,
> case when
>  situacao = 1
> then
> 'Produto vencido'
>   when
>  situacao = 2
> then
> 'Produto bloqueado manualmente'
> when
>  situacao = 3
> then
> 'Produto vencido/Produto bloqueado manualmente'
> when
>  situacao = 4
> then
> 'Produto bloqueado para inventário'
> when
>  situacao = 5
> then
> 'Produto vencido/Produto bloqueado para inventário'
> when
>  else
> 'Produto sem situacao informada'
> end descricao_situacao
> from tbproduto;
>
>
> Exemplo 2:
>
> create or replace view vw_produto_situacao as
> select id_produto, descricao_produto, situacao,
> fnc_get_descricao_situacao(situacao) as descricao_situacao
> from tbproduto;
>
>
> Bom acredito que podem existir outras formas , mais ambas poderiam lhe
> ajudar.
>
> Att,
> Emerson
>
>
> Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.'
> miltonbas...@gmail.com [oracle_br] escreveu:
>
>
>>
>> Bom dia amigos!
>>
>> Tenho um probleminha aqui e não sei se existe solução usando SQL.
>> Caso alguém consiga resolver, agradeço muito!
>>
>> Duas tabelas.
>>
>> Primeira tabela: SITUACAO
>> A tabela "Situação" tem um campo ID e um campo "Descrição".
>> O campo ID é sempre potência de 2:
>>
>> ID   Descrição
>> 1Produto vencido
>> 2Produto bloqueado manualmente
>> 4Produto bloqueado para inventário
>> 8Produto bloqueado por avaria
>>
>> Inventei essas descrições acima pra ilustrar o exemplo.
>>
>> Numa outra tabela, tabela ESTOQUE, eu tenho um campo
>> de Situação. Exemplo:
>>
>> ID  Produto   Situação
>> 1   Cerveja2
>> 2   Picanha   5
>> 3   Alcatra 9
>> 4   Maminha  7
>>
>> O campo situação mostra a soma de todos os tipos.
>> A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido e
>> também está bloqueado para inventário.
>>
>>
>> Bom, tudo isso já está implementado e funcionando.
>>
>> A minha dúvida vem abaixo
>>
>> Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
>> bloqueios desse item do estoque concatenados.
>>
>> Isso é possível?
>>
>> Ficaria assim:
>>
>> 1  Cerveja  2  Produto bloqueado manualmente
>> 2  Picanha  5  Produto vencido|Produto bloqueado para inventário
>> 3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
>> 4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
>> bloqueado para inventário
>>
>>
>> É possível fazer isso apenas com uma query para criar uma View?
>>
>>
>>
>  
>


Re: [oracle_br] Desafio SQL

2014-05-27 Por tôpico 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
Fala Gaudencio!

O exemplo 1 é inviável... posso passar de milhares de possibilidades
facilmente!
A idéia é deixar automático, e não escrever todas as possibildades
manualmente

A função realmente parece uma saída interessante!
Vou ver se consigo escrevê-la.




Em 27 de maio de 2014 12:13, Emerson dos Santos Gaudêncio
emerson.fen...@gmail.com [oracle_br] escreveu:

>
>
> Milton é possível fazendo um case na query com as variações ou utilizando
> uma função que retorne as decrições conforme a situação:
>
> Exemplo 1:
>
> create or replace view vw_produto_situacao as
> select id_produto, descricao_produto, situacao,
> case when
>  situacao = 1
> then
> 'Produto vencido'
>   when
>  situacao = 2
> then
> 'Produto bloqueado manualmente'
> when
>  situacao = 3
> then
> 'Produto vencido/Produto bloqueado manualmente'
> when
>  situacao = 4
> then
> 'Produto bloqueado para inventário'
> when
>  situacao = 5
> then
> 'Produto vencido/Produto bloqueado para inventário'
> when
>  else
> 'Produto sem situacao informada'
> end descricao_situacao
> from tbproduto;
>
>
> Exemplo 2:
>
> create or replace view vw_produto_situacao as
> select id_produto, descricao_produto, situacao,
> fnc_get_descricao_situacao(situacao) as descricao_situacao
> from tbproduto;
>
>
> Bom acredito que podem existir outras formas , mais ambas poderiam lhe
> ajudar.
>
> Att,
> Emerson
>
>
> Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.'
> miltonbas...@gmail.com [oracle_br] escreveu:
>
>
>>
>> Bom dia amigos!
>>
>> Tenho um probleminha aqui e não sei se existe solução usando SQL.
>> Caso alguém consiga resolver, agradeço muito!
>>
>> Duas tabelas.
>>
>> Primeira tabela: SITUACAO
>> A tabela "Situação" tem um campo ID e um campo "Descrição".
>> O campo ID é sempre potência de 2:
>>
>> ID   Descrição
>> 1Produto vencido
>> 2Produto bloqueado manualmente
>> 4Produto bloqueado para inventário
>> 8Produto bloqueado por avaria
>>
>> Inventei essas descrições acima pra ilustrar o exemplo.
>>
>> Numa outra tabela, tabela ESTOQUE, eu tenho um campo
>> de Situação. Exemplo:
>>
>> ID  Produto   Situação
>> 1   Cerveja2
>> 2   Picanha   5
>> 3   Alcatra 9
>> 4   Maminha  7
>>
>> O campo situação mostra a soma de todos os tipos.
>> A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido e
>> também está bloqueado para inventário.
>>
>>
>> Bom, tudo isso já está implementado e funcionando.
>>
>> A minha dúvida vem abaixo
>>
>> Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
>> bloqueios desse item do estoque concatenados.
>>
>> Isso é possível?
>>
>> Ficaria assim:
>>
>> 1  Cerveja  2  Produto bloqueado manualmente
>> 2  Picanha  5  Produto vencido|Produto bloqueado para inventário
>> 3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
>> 4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
>> bloqueado para inventário
>>
>>
>> É possível fazer isso apenas com uma query para criar uma View?
>>
>>
>>
>  
>


Re: [oracle_br] Desafio SQL

2014-05-27 Por tôpico Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]
Milton é possível fazendo um case na query com as variações ou utilizando
uma função que retorne as decrições conforme a situação:

Exemplo 1:

create or replace view vw_produto_situacao as
select id_produto, descricao_produto, situacao,
case when
 situacao = 1
then
'Produto vencido'
 when
 situacao = 2
then
'Produto bloqueado manualmente'
when
 situacao = 3
then
'Produto vencido/Produto bloqueado manualmente'
when
 situacao = 4
then
'Produto bloqueado para inventário'
when
 situacao = 5
then
'Produto vencido/Produto bloqueado para inventário'
when
 else
'Produto sem situacao informada'
end descricao_situacao
from tbproduto;


Exemplo 2:

create or replace view vw_produto_situacao as
select id_produto, descricao_produto, situacao,
fnc_get_descricao_situacao(situacao) as descricao_situacao
from tbproduto;


Bom acredito que podem existir outras formas , mais ambas poderiam lhe
ajudar.

Att,
Emerson


Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.'
miltonbas...@gmail.com [oracle_br]  escreveu:

>
>
> Bom dia amigos!
>
> Tenho um probleminha aqui e não sei se existe solução usando SQL.
> Caso alguém consiga resolver, agradeço muito!
>
> Duas tabelas.
>
> Primeira tabela: SITUACAO
> A tabela "Situação" tem um campo ID e um campo "Descrição".
> O campo ID é sempre potência de 2:
>
> ID   Descrição
> 1Produto vencido
> 2Produto bloqueado manualmente
> 4Produto bloqueado para inventário
> 8Produto bloqueado por avaria
>
> Inventei essas descrições acima pra ilustrar o exemplo.
>
> Numa outra tabela, tabela ESTOQUE, eu tenho um campo
> de Situação. Exemplo:
>
> ID  Produto   Situação
> 1   Cerveja2
> 2   Picanha   5
> 3   Alcatra 9
> 4   Maminha  7
>
> O campo situação mostra a soma de todos os tipos.
> A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido e
> também está bloqueado para inventário.
>
>
> Bom, tudo isso já está implementado e funcionando.
>
> A minha dúvida vem abaixo
>
> Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
> bloqueios desse item do estoque concatenados.
>
> Isso é possível?
>
> Ficaria assim:
>
> 1  Cerveja  2  Produto bloqueado manualmente
> 2  Picanha  5  Produto vencido|Produto bloqueado para inventário
> 3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
> 4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
> bloqueado para inventário
>
>
> É possível fazer isso apenas com uma query para criar uma View?
>
>
>  
>


[oracle_br] Desafio SQL

2014-05-27 Por tôpico 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
Bom dia amigos!

Tenho um probleminha aqui e não sei se existe solução usando SQL.
Caso alguém consiga resolver, agradeço muito!

Duas tabelas.

Primeira tabela: SITUACAO
A tabela "Situação" tem um campo ID e um campo "Descrição".
O campo ID é sempre potência de 2:

ID   Descrição
1Produto vencido
2Produto bloqueado manualmente
4Produto bloqueado para inventário
8Produto bloqueado por avaria

Inventei essas descrições acima pra ilustrar o exemplo.

Numa outra tabela, tabela ESTOQUE, eu tenho um campo
de Situação. Exemplo:

ID  Produto   Situação
1   Cerveja2
2   Picanha   5
3   Alcatra 9
4   Maminha  7

O campo situação mostra a soma de todos os tipos.
A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido e
também está bloqueado para inventário.


Bom, tudo isso já está implementado e funcionando.

A minha dúvida vem abaixo

Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os
bloqueios desse item do estoque concatenados.

Isso é possível?

Ficaria assim:

1  Cerveja  2  Produto bloqueado manualmente
2  Picanha  5  Produto vencido|Produto bloqueado para inventário
3  Alcatra   9  Produto vencido|Produto bloqueado por avaria
4  Maminha 7  Produto vencido|Produto bloqueado manualmente|Produto
bloqueado para inventário


É possível fazer isso apenas com uma query para criar uma View?