Duvida Select

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Ter, 30 Mar 2010 10:59 am

Pessoal bom dia!

Estou com a seguinte duvida.

Tenho um relatorio no qual a pessoa vai passar entre 10 Prod e 10 Qtde desses Prod.
Cada Prod desse digitado e Qtde vai ser uma composicao de um produto em especifico.
Até ai tudo bem consegui fazer uma select que me traga isso, so que ela ta trazendo o seguinte: Vamos supor que digito la 2 produtos so ele me traz no relatorio todos os produtos que são compostos de apenas dois produtos, e que neles contenha pelo menos um Prod digitado por mim como parametro.
E não é isso que eu quero, quero que ele traga apenas os produtos que tenha os dois Prod que digitei e não todos os produtos que tenham duas composicoes de pelo menos um produto que digitei.

Segue a select que fiz:
Código: Selecionar todos
select t.*,
           b.pro_st_alternativo alternativo_item, b.pro_st_descricao descritivo_item,
           p.pro_st_alternativo, p.pro_st_descricao
           
    from mgadm.est_produtos            p,
         mgadm.est_itenslistamateriais t
    inner join mgadm.est_produtos b
    On (b.pro_tab_in_codigo = t.com_tab_in_codigo
    and b.pro_pad_in_codigo = t.com_pad_in_codigo
    and b.pro_in_codigo     = t.com_in_codigo)
    and t.lis_in_revisao    = (Select Max(d.lis_in_revisao) From mgadm.est_revisaolistamateriais d
                               Where d.pro_tab_in_codigo = t.pro_tab_in_codigo
                               and   d.pro_pad_in_codigo = t.pro_pad_in_codigo
                               and   d.pro_in_codigo     = t.pro_in_codigo)
                                 
    where t.pro_tab_in_codigo = p.pro_tab_in_codigo
    and   t.pro_pad_in_codigo = p.pro_pad_in_codigo
    and   t.pro_in_codigo     = p.pro_in_codigo
   
    and   ((b.pro_st_alternativo = &prod1 and t.com_re_segquantidade = &qtde1) or
           (b.pro_st_alternativo = &prod2 and t.com_re_segquantidade = &qtde2))
    and   ( select count(*) from mgadm.est_itenslistamateriais l, mgadm.est_produtos r
                where p.pro_tab_in_codigo = l.pro_tab_in_codigo
                and   p.pro_pad_in_codigo = l.pro_pad_in_codigo
                and   p.pro_in_codigo     = l.pro_in_codigo
               
                And r.pro_tab_in_codigo = l.com_tab_in_codigo
                And r.pro_pad_in_codigo = l.com_pad_in_codigo
                And r.pro_in_codigo = l.com_in_codigo ) = 2;


O problema ta aqui: ((b.pro_st_alternativo = &prod1 and t.com_re_segquantidade = &qtde1) or
           (b.pro_st_alternativo = &prod2 and t.com_re_segquantidade = &qtde2))

Não sei como fazer diferente, se alguém souber, por favor me ajude ai....
leandrolinof
Localização: Americana

Mensagemem Ter, 30 Mar 2010 4:54 pm

Alguém?
leandrolinof
Localização: Americana

Mensagemem Ter, 30 Mar 2010 5:31 pm

Acho que tem que fazer com EXISTS.
Veja se esse exemplo é parecido com o que você precisa:

http://glufke.net/oracle/viewtopic.php?t=441

Ele busca as tabelas que tem o campo X e Y..
E não X ou Y...
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 30 Mar 2010 5:36 pm

Tem como dar um exemplo do que você quer? Reli várias vezes, mas não consegui entender a explicação sobre que tipos de dados sua tabelas contém nem o que você está tentando extrair delas.
fsitja
Localização: Gaúcho no Rio de Janeiro - RJ

"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Mensagemem Qua, 31 Mar 2010 7:25 am

Vou tentar explicar de um modo diferente.

Tenho os seguintes produtos: Caderno Espiral, Livro, Revista, Agenda Espiral

Pra se fazer estes itens tenho que ter vários outros itens: Folha, Arame, Capa Dura, etc...

Na minha Select gostaria de filtrar somente os seguintes itens: Arame e Capa Dura.

Feito isso gostaria que me trouxesse somente os seguintes produtos: Caderno Espiral e Agenda Espiral porque somente eles que utilizam Arame e Capa Dura.

Na minha Select esta vindo todos os produtos, porque, porque todos eles tem pelo menos um item que se utiliza pra faze-lo...

Não sei se deu pra entender agora com esse exemplo masss foi o unico que me veio a cabeça no momento....
leandrolinof
Localização: Americana

Mensagemem Qua, 31 Mar 2010 8:55 am

É exatamente o select que eu te mandei acima no link, só que com TABELAS.

Veja:
Uma tabela possui varios campos.
Eu quero as tabelas que possuem o campo A e o campo B. (não o campo A ou o campo B).

Pra isso se usa EXISTS... VEja o link que eu passei la em cima pra ver como se faz.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Qua, 31 Mar 2010 10:33 am

dr_gori

Como não tenho muita experiencia em PL fiz assim...

Código: Selecionar todos
select t.*,
       b.pro_st_alternativo alternativo_item, b.pro_st_descricao descritivo_item,
       p.pro_st_alternativo, p.pro_st_descricao
           
from mgadm.est_produtos            p,
     mgadm.est_itenslistamateriais t
     inner join mgadm.est_produtos b
     On (b.pro_tab_in_codigo = t.com_tab_in_codigo
     and b.pro_pad_in_codigo = t.com_pad_in_codigo
     and b.pro_in_codigo     = t.com_in_codigo)
     and t.lis_in_revisao    = (Select Max(d.lis_in_revisao) From mgadm.est_revisaolistamateriais d
                                Where d.pro_tab_in_codigo = t.pro_tab_in_codigo
                                and   d.pro_pad_in_codigo = t.pro_pad_in_codigo
                                and   d.pro_in_codigo     = t.pro_in_codigo)

where t.pro_tab_in_codigo = p.pro_tab_in_codigo
and   t.pro_pad_in_codigo = p.pro_pad_in_codigo
and   t.pro_in_codigo     = p.pro_in_codigo

and exists (select 1 from mgadm.est_produtos b, mgadm.est_itenslistamateriais t
            where b.pro_st_alternativo = &prod1 and t.com_re_segquantidade = &qtde1)
and exists (select 1 from mgadm.est_produtos b, mgadm.est_itenslistamateriais t
            where b.pro_st_alternativo = &prod2 and t.com_re_segquantidade = &qtde2)
           
and   (select count(*) from mgadm.est_itenslistamateriais l, mgadm.est_produtos r
       where p.pro_tab_in_codigo = l.pro_tab_in_codigo
       and   p.pro_pad_in_codigo = l.pro_pad_in_codigo
       and   p.pro_in_codigo     = l.pro_in_codigo
               
       and r.pro_tab_in_codigo = l.com_tab_in_codigo
       and r.pro_pad_in_codigo = l.com_pad_in_codigo
       and r.pro_in_codigo = l.com_in_codigo ) = 2;



Não tenho ideia de como fazer diferente....
leandrolinof
Localização: Americana

Mensagemem Qua, 31 Mar 2010 4:17 pm

Alguém que já tenha feito algo parecido pode me dar um help????
leandrolinof
Localização: Americana

Mensagemem Qua, 31 Mar 2010 7:17 pm

Me desculpe, eu entendi sua explicação em português, mas como que isso se traduz no seu modelo de dados ainda está no escuro. Leia seu post com a visão de quem não conhece nada sobre seu sistema, se ponha no nosso lugar. Então depois forneça mais explicações e exemplos concretos, formas da gente conseguir te ajudar.

Tem como postar a estrutura das tabelas e os dados de exemplo para que a gente possa rodar um SQL em cima do modelo? Peço um exemplo simplificado, quanto mais simples melhor, só para poder executar algo nele que atenda seu problema, só com as colunas necessárias das tabelas em questão, nem mais nem menos.

Por exemplo, com algo assim daria para te ajudar:
Código: Selecionar todos
-- a tabela est_produtos armazena tal coisa, e serve para isso e aquilo
-- quais são suas colunas e para que servem (pk, fks)
create table est_produtos (pro_tab_in_codigo  number(10) primary key,
                           pro_pad_in_codigo  number(10),
                           pro_in_codigo      number(10),
                           pro_st_descricao   varchar2(100),
                           pro_st_alternativo varchar2(100));
-- forneça dados de exemplo significativos para ilustrar seu problema e
-- descobrirmos uma solução válida
insert into est_produtos values (1, 100, 55, 'CADERNO ESPIRAL', 'NÃO SEI');
insert into est_produtos values (2, 200, 65, 'LIVRO', 'SEI LÁ');
insert into est_produtos values (3, 300, 75, 'AGENDA ESPIRAL', 'HEIN?');
--
create table est_itenslistamateriais (cod_item_lista    number(10) primary key,
                                      com_tab_in_codigo number(10),
                                      com_in_codigo     number(10),
                                      com_re_segquantidade number(10));
-- a tabela itens de lista de materiais contém a relação de produtos (?) pertencentes
-- a uma lista de materiais, na coluna tal fica tal atributo, que quero usar para
-- descobrir tal coisa (ou não, sei lá...)
insert into est_itenslistamateriais values (xxx, yyy, zzz, aaa);
insert ...
insert ...
-- a tabela abaixo armazena abc e relaciona com a tabela tal, na coluna x fica o valor
-- que me interessa, que quer dizer tal coisa
create table est_revisaolistamateriais (cod_revisao        number(10) primary key,
                                        pro_pad_in_codigo  number(10),
                                        pro_in_codigo      number(10),
                                        pro_st_descricao   varchar2(100),
                                        t.lis_in_revisao   );
insert into est_revisaolistamateriais values (1, 2, 3, 'dumdum');
insert into ...
insert into ...


Agora quero obter apenas os materiais que blá blá...
...
Usando os dados acima, se eu informar &prod2 = 5 e &qtde2 = 10, quero que seja retornado:
Código: Selecionar todos

pro_tab_in_codigo   pro_pad_in_codigo   pro_in_codigo
-------------------------------------------------
1                   534                 'LIVRO'
12                  99                  'CADERNO'


As linhas tal e tal e tal não aparecem porque... blá blá blá...
se houvesse uma linha com valor XXX na coluna BLAH da tabela YYY, então a linha
XXX da tabela HHH apareceria também porque... blá blá blá.


De novo... esse é o meu exemplo de como dar um exemplo que seja útil para nós. Por favor, não leve a mal, conversa de fórum demora muito para se desenvolver se tudo não é explicado de primeira, se o exemplo não for expressivo e de acordo com a realidade e complexidade do seu sistema.

Abraço,
Francisco.
fsitja
Localização: Gaúcho no Rio de Janeiro - RJ

"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Mensagemem Qui, 01 Abr 2010 7:33 am

PRO_TAB_IN_CODIGO NUMBER(3) 100 - "Cód. Tabela Itens Código da Tabela Itens."
PRO_PAD_IN_CODIGO NUMBER(3) N "Cód. Padrão Itens
Código padrão da tabela Itens."
PRO_IN_CODIGO NUMBER(7) N "Cod. Item
Codigo do Item Estoque"
PRO_ST_DESCRICAO VARCHAR2(70) N "Item
Descrição do Item"
PRO_ST_ALTERNATIVO VARCHAR2(50) N "Código Alternativo
Código Alternativo"
leandrolinof
Localização: Americana

Mensagemem Qui, 01 Abr 2010 7:39 am

Estrutura das Tabelas

Tabela de Produtos =
PRO_TAB_IN_CODIGO NUMBER(30) - "Cód. Tabela Itens Código da tabela Itens."
PRO_PAD_IN_CODIGO NUMBER(3) - "Cód. Padrão Itens Código padrão da tabela Itens."
PRO_IN_CODIGO NUMBER(7) - "Cod. Item Codigo do Item Estoque"
PRO_ST_DESCRICAO VARCHAR2(70) - "Item Descrição do Item"
PRO_ST_ALTERNATIVO VARCHAR2(50) - "Código Alternativo Código Alternativo"

Tabela de Itens =
PRO_TAB_IN_CODIGO NUMBER(3) - "Cód. Tabela Itens Código da tabela Itens."
PRO_PAD_IN_CODIGO NUMBER(3) - "Cód. Padrão Itens Código padrão da tabela Itens."
PRO_IN_CODIGO NUMBER(7) - "Cod. Item Codigo do Item Estoque"
COM_TAB_IN_CODIGO NUMBER(3) - "Cód. Tabela Itens Código da tabela Itens."
COM_PAD_IN_CODIGO NUMBER(3) - "Cód. Padrão Itens Código padrão da tabela Itens."
COM_IN_CODIGO NUMBER(7) - "Cod. Item Codigo do Item Estoque"
COM_RE_SEGQUANTIDADE NUMBER - "Seg.Quantidade Segunda Quantidade A ser usada no Controle de Formulas para Receita de Fabricação"
leandrolinof
Localização: Americana

Mensagemem Qui, 01 Abr 2010 7:58 am

Chaves primarias-
PRO_TAB_IN_CODIGO NUMBER,
PRO_PAD_IN_CODIGO NUMBER
PRO_IN_CODIGO NUMBER
Chaves Estrangeiras-
COM_TAB_IN_CODIGO NUMBER,
COM_PAD_IN_CODIGO NUMBER,
COM_IN_CODIGO NUMBER

Os campos COM_ da tabela de Itens, tenho de relacionar com os campos PRO da tabela de Produtos, pois os produtos da tabela de Produtos serão compostos por produtos da tabela de Itens.

PRO_ST_DESCRICAO e PRO_ST_ALTERNATIVO serão as informações dos produtos das duas tabelas.
leandrolinof
Localização: Americana

Mensagemem Qui, 01 Abr 2010 8:21 am

A tabela de REVISAO no momento não é importante.

No sistema vou tentar explicar como funciona:
Existe um cadastro de produtos que são inseridos na tabela de PRODUTOS, até ai tudo bem, é um cadastro normal como qualquer outro sistema. Dentro dessa tela de cadastro existe uma outra tela que se cadastra os produtos que farão parte da composição do produto principal.
Vamos supor que no Produto - CADERNO sua composição seria: CAPA DURA, ARAME, FOLHA.
No produto REVISTA sua composição seria: CAPA MOLE, FOLHA.
No produto AGENDA sua composição seria: CAPA DURA, ARAME, FOLHA.

Estes são os produtos filho CADERNO, REVISTA e AGENDA e os produtos pais seriam CAPA DURA, CAPA MOLE, ARAME e FOLHA

Agora no relatório que preciso mostrar:
Preciso colocar, vamos supor 4 parametros para o usuário pesquisar: prod1 e prod2, qtde1 e qtde2, que seria consultado no campo: COM_RE_SEGQUANTIDADE - "Seg.Quantidade
Segunda Quantidade A ser usada no Controle de Formulas para Receita de Fabricação"
, este se encontra na tabela de ITENS LISTA DE MATERIAIS.
Os parametros Prod1 e 2, serão os produtos PAI da tabela de ITENS LISTA DE MATERIAIS.
O que está acontecendo hj na Select é que ele está trazendo os produtos FILHO da tabela de PRODUTOS que contenha pelo menos um produto PAI da tabela de ITENS LISTA DE MATERIAIS.
O que tem de ser feito hj é: trazer no relatório todos os produtos PAI que contenha os dois produtos FILHO que o usuário digitou nos parametros de pesquisa Prod1 e Qtde1 + Prod2 e Qtde2

Cara acho que agora deu pra entender melhor, senão a gente faz um chat ai pra tentar ver se você entende rsrsrsrsrs
leandrolinof
Localização: Americana

Mensagemem Ter, 06 Abr 2010 11:06 am

Blza Leandro?

Demorei um pouco para ler a sua resposta, mas pelo que entendi agora seria isso:
Código: Selecionar todos
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as fsitja

SQL>
SQL> create table produto (PRO_TAB_IN_CODIGO NUMBER(3),
  2                        PRO_PAD_IN_CODIGO NUMBER(3),
  3                        PRO_IN_CODIGO NUMBER(7),
  4                        PRO_ST_DESCRICAO VARCHAR2(70),
  5                        PRO_ST_ALTERNATIVO VARCHAR2(50));

Table created
SQL> alter table produto add constraint prod_pk primary key (PRO_TAB_IN_CODIGO, PRO_PAD_IN_CODIGO, PRO_IN_CODIGO);

Table altered
SQL> begin
  2  insert into produto values (100, 1, 10, 'CADERNO', 'CADERNO ESPIRAL');
  3  insert into produto values (101, 1, 10, 'REVISTA', 'REVISTA VEJA');
  4  insert into produto values (102, 1, 10, 'AGENDA', 'AGENDA HELLO KITTY');
  5  insert into produto values (103, 1, 10, 'CAPA DURA', 'CAPA DURA');
  6  insert into produto values (104, 1, 10, 'ARAME', 'ARAME');
  7  insert into produto values (105, 1, 10, 'CAPA MOLE', 'CAPA MOLE');
  8  insert into produto values (106, 1, 10, 'FOLHA', 'FOLHA');
  9  commit;
10  end;
11  /

PL/SQL procedure successfully completed
SQL> --
SQL> create table item (PRO_TAB_IN_CODIGO NUMBER(3),
  2                     PRO_PAD_IN_CODIGO NUMBER(3),
  3                     PRO_IN_CODIGO NUMBER(7),
  4                     COM_TAB_IN_CODIGO NUMBER(3),
  5                     COM_PAD_IN_CODIGO NUMBER(3),
  6                     COM_IN_CODIGO NUMBER(7),
  7                     COM_RE_SEGQUANTIDADE NUMBER);

Table created
SQL> alter table item add constraint item_pk
  2               primary key (PRO_TAB_IN_CODIGO, PRO_PAD_IN_CODIGO, PRO_IN_CODIGO,
  3                            COM_TAB_IN_CODIGO, COM_PAD_IN_CODIGO, COM_IN_CODIGO);

Table altered
SQL> alter table item add constraint item_prod_fk foreign key (
  2                   COM_TAB_IN_CODIGO, COM_PAD_IN_CODIGO, COM_IN_CODIGO)
  3                   references produto (PRO_TAB_IN_CODIGO, PRO_PAD_IN_CODIGO, PRO_IN_CODIGO);

Table altered
SQL> alter table item add constraint item_prod_pk_fk foreign key (
  2                   PRO_TAB_IN_CODIGO, PRO_PAD_IN_CODIGO, PRO_IN_CODIGO)
  3                   references produto (PRO_TAB_IN_CODIGO, PRO_PAD_IN_CODIGO, PRO_IN_CODIGO);

Table altered
SQL> begin
  2  insert into item values (100, 1, 10, 103, 1, 10, 2); -- CADERNO, CAPA DURA
  3  insert into item values (100, 1, 10, 104, 1, 10, 1); -- CADERNO, ARAME
  4  insert into item values (100, 1, 10, 106, 1, 10, 60); -- CADERNO, FOLHA
  5  insert into item values (101, 1, 10, 105, 1, 10, 2); -- REVISTA, CAPA MOLE
  6  insert into item values (101, 1, 10, 106, 1, 10, 40); -- REVISTA, FOLHA
  7  insert into item values (102, 1, 10, 103, 1, 10, 2); -- AGENDA, CAPA DURA
  8  insert into item values (102, 1, 10, 104, 1, 10, 1); -- AGENDA, ARAME
  9  insert into item values (102, 1, 10, 106, 1, 10, 150); -- AGENDA, FOLHA
10  commit;
11  end;
12  /

PL/SQL procedure successfully completed

SQL>
SQL> SELECT p.pro_st_descricao,
  2         p.pro_st_alternativo,
  3         i.com_re_segquantidade,
  4         mat.pro_st_descricao,
  5         mat.pro_st_alternativo
  6    FROM (SELECT prod.pro_tab_in_codigo,
  7                 prod.pro_pad_in_codigo,
  8                 prod.pro_in_codigo,
  9                 prod.pro_st_alternativo,
10                 prod.pro_st_descricao
11            FROM produto prod
12           WHERE EXISTS (SELECT 1
13                    FROM produto mat2
14                    JOIN item t2
15                      ON mat2.pro_tab_in_codigo = t2.com_tab_in_codigo
16                         AND mat2.pro_pad_in_codigo = t2.com_pad_in_codigo
17                         AND mat2.pro_in_codigo = t2.com_in_codigo
18                   WHERE t2.pro_tab_in_codigo = prod.pro_tab_in_codigo
19                         AND t2.pro_pad_in_codigo = prod.pro_pad_in_codigo
20                         AND t2.pro_in_codigo = prod.pro_in_codigo
21                         AND mat2.pro_st_alternativo = 'ARAME' --&prod1
22                         AND t2.com_re_segquantidade = 1 --&qtde1
23                  )
24                 AND EXISTS (SELECT 1
25                    FROM produto mat3
26                    JOIN item t3
27                      ON mat3.pro_tab_in_codigo = t3.com_tab_in_codigo
28                         AND mat3.pro_pad_in_codigo = t3.com_pad_in_codigo
29                         AND mat3.pro_in_codigo = t3.com_in_codigo
30                   WHERE t3.pro_tab_in_codigo = prod.pro_tab_in_codigo
31                         AND t3.pro_pad_in_codigo = prod.pro_pad_in_codigo
32                         AND t3.pro_in_codigo = prod.pro_in_codigo
33                         AND mat3.pro_st_alternativo = 'FOLHA' --&prod2
34                         AND t3.com_re_segquantidade = 60 --&qtde2
35                  )) p
36    JOIN item i
37      ON p.pro_tab_in_codigo = i.pro_tab_in_codigo
38         AND p.pro_pad_in_codigo = i.pro_pad_in_codigo
39         AND p.pro_in_codigo = i.pro_in_codigo
40    JOIN produto mat
41      ON mat.pro_tab_in_codigo = i.com_tab_in_codigo
42         AND mat.pro_pad_in_codigo = i.com_pad_in_codigo
43         AND mat.pro_in_codigo = i.com_in_codigo;

PRO_ST_DESCRICAO PRO_ST_ALTERNATIVO  COM_RE_SEGQUANTIDADE PRO_ST_DESCRICAO PRO_ST_ALTERNATIVO
---------------- ------------------- -------------------- ---------------- ------------------
CADERNO          CADERNO ESPIRAL                        2 CAPA DURA        CAPA DURA
CADERNO          CADERNO ESPIRAL                        1 ARAME            ARAME
CADERNO          CADERNO ESPIRAL                       60 FOLHA            FOLHA


É como o Dr Gori falou, só que a tabela de composição tem duas FKs para produto, correto? Por isso estava um pouco difícil de entender no início o que estava acontecendo.

Dá um validada e deixa o feedback depois.

Falou,
Francisco.
fsitja
Localização: Gaúcho no Rio de Janeiro - RJ

"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Mensagemem Seg, 12 Abr 2010 8:14 am

Blza fsitja

Cara testei a select aqui ele trouxe os produtos que contenham os itens dentro, so que ainda está vindo produtos que contenham mais itens dentro fora os da pesquisa.

O que eu tenho que trazer seria so mesmo os produtos cujo itens foram pesquisados...
leandrolinof
Localização: Americana

Mensagemem Seg, 12 Abr 2010 2:52 pm

O SQL que postei só exibe o produto caderno, e mais nenhum. Há algo errado ali?

Senão, provavelmente deu algum problema quando você adaptou o código para suas tabelas. De repente se você postar o que foi executado fica possível ajudar.
fsitja
Localização: Gaúcho no Rio de Janeiro - RJ

"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Mensagemem Ter, 13 Abr 2010 2:29 pm

Segue a Select:

SELECT distinct p.pro_st_alternativo,
p.pro_st_descricao,
i.com_re_segquantidade,
mat.pro_st_descricao,
mat.pro_st_alternativo
FROM (SELECT prod.pro_tab_in_codigo,
prod.pro_pad_in_codigo,
prod.pro_in_codigo,
prod.pro_st_alternativo,
prod.pro_st_descricao
FROM mgadm.est_produtos prod
WHERE EXISTS (SELECT 1
FROM mgadm.est_produtos mat2
JOIN mgadm.est_itenslistamateriais t2
ON mat2.pro_tab_in_codigo = t2.com_tab_in_codigo
AND mat2.pro_pad_in_codigo = t2.com_pad_in_codigo
AND mat2.pro_in_codigo = t2.com_in_codigo
WHERE t2.pro_tab_in_codigo = prod.pro_tab_in_codigo
AND t2.pro_pad_in_codigo = prod.pro_pad_in_codigo
AND t2.pro_in_codigo = prod.pro_in_codigo
AND mat2.pro_st_alternativo = /*'ARAME'*/ &prod1
AND t2.com_re_segquantidade = /*1*/ &qtde1
)
AND EXISTS (SELECT 1
FROM mgadm.est_produtos mat3
JOIN mgadm.est_itenslistamateriais t3
ON mat3.pro_tab_in_codigo = t3.com_tab_in_codigo
AND mat3.pro_pad_in_codigo = t3.com_pad_in_codigo
AND mat3.pro_in_codigo = t3.com_in_codigo
WHERE t3.pro_tab_in_codigo = prod.pro_tab_in_codigo
AND t3.pro_pad_in_codigo = prod.pro_pad_in_codigo
AND t3.pro_in_codigo = prod.pro_in_codigo
AND mat3.pro_st_alternativo = /*'FOLHA'*/ &prod2
AND t3.com_re_segquantidade = /*60*/ &qtde2
)) p
JOIN mgadm.est_itenslistamateriais i
ON p.pro_tab_in_codigo = i.pro_tab_in_codigo
AND p.pro_pad_in_codigo = i.pro_pad_in_codigo
AND p.pro_in_codigo = i.pro_in_codigo
JOIN mgadm.est_produtos mat
ON mat.pro_tab_in_codigo = i.com_tab_in_codigo
AND mat.pro_pad_in_codigo = i.com_pad_in_codigo
AND mat.pro_in_codigo = i.com_in_codigo;
leandrolinof
Localização: Americana

Mensagemem Qui, 15 Abr 2010 4:14 pm

fsitja,

Consegui trazer os produtos...

Só que fui adicionar mais EXISTS dentro da SELECT pra trazer mais produtos e não trouxe...

Por exemplo...

Fiz mais dois EXISTS pra trazer um produto com 4 itens dentro dele com 4 qtde e não trouxe nada...

Essa select é pra trazer somente dois mesmo ou traz mais que dois produtos?
leandrolinof
Localização: Americana

Mensagemem Qui, 15 Abr 2010 4:37 pm

Cara desculpa funcionou...

Erro meu, tinha anotado cod do prod errado :)

Deu certo cara muito obrigado mesmo pela ajuda....
leandrolinof
Localização: Americana

Mensagemem Qui, 15 Abr 2010 9:32 pm

Opa, está blza, foi mal também por não ter lido a mensagem, mas estou de férias e sabe como é 8)
fsitja
Localização: Gaúcho no Rio de Janeiro - RJ

"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem