Olá amigos,
sou novo aqui no fórum e também no SQL...
bom, preciso fazer a seguinte comparação. Tenho uma tabela de produtos e preciso comparar se o produto A tem as mesmas informações preenchidas assim como no produto B e quais são elas, algo parecido.
Agradeço desde já
valeu!
Comparar dados da mesma tabela.
-
- Rank: Estagiário Sênior
- Mensagens: 11
- Registrado em: Ter, 23 Mar 2010 5:15 pm
- Localização: Araraquara-SP
a principio podemos considerar a seguinte pesquisa :
SELECT * FROM PRODUTO T1, PRODUTO T2
WHERE T1.CODPRO <> T2.CODPRO
AND (T1.COLUNA1 = T2.COLUNA1 OR
T1.COLUNA2 = T2.COLUNA2 OR
T1.COLUNA3 = T2.COLUNA3 OR
..... )
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- 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
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
A definição do que você precisa está meio vaga... de repente com algo mais pontual dê para sugerir algo mais específico para sua necessidade.
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Ter, 30 Mar 2010 12:01 am
- Localização: PR
Alysson
Bom dia fsitja,
realmente,
bom então é o seguinte.
tenho uma tabela de produtos (medicamentos) onde o medicamento comercial tem informado em seu cadastro o seu correspondente genérico que também é cadastrado na mesma tabela e tem seu correspondente comercial informado. Partindo disso, em algumas situações chamo o medicamento comercial porém utilizo o seu genérico, e vice versa, para fins de movimentação de estoque, cobrança etc. Em alguns casos os dois cadastros devem ser exatamente iguais outrora não, dai preciso comparar os medicamentos (comercial X genérico) afim de identificar diferenças nos cadastros e de preferência quais campos estão informados em um e no outro não e/ou que informação tem no campo A do comercial e o que tem no campo A do genérico.
... Agradeço a informação do amigo JML, porém ainda não consegui adaptar ao que preciso.
Bom, acredito que com estas informações acima seja possível entender melhor a situação.
Agradeço a força!!!
realmente,
bom então é o seguinte.
tenho uma tabela de produtos (medicamentos) onde o medicamento comercial tem informado em seu cadastro o seu correspondente genérico que também é cadastrado na mesma tabela e tem seu correspondente comercial informado. Partindo disso, em algumas situações chamo o medicamento comercial porém utilizo o seu genérico, e vice versa, para fins de movimentação de estoque, cobrança etc. Em alguns casos os dois cadastros devem ser exatamente iguais outrora não, dai preciso comparar os medicamentos (comercial X genérico) afim de identificar diferenças nos cadastros e de preferência quais campos estão informados em um e no outro não e/ou que informação tem no campo A do comercial e o que tem no campo A do genérico.
... Agradeço a informação do amigo JML, porém ainda não consegui adaptar ao que preciso.
Bom, acredito que com estas informações acima seja possível entender melhor a situação.
Agradeço a força!!!
- fsitja
- Rank: OraSauro
- Mensagens: 611
- Registrado em: Seg, 19 Jan 2009 4:29 pm
- 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
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
nollries, fiz dois exemplos de select com formas diferentes de exibir relatório desse tipo:
Não dê bola para minha tabela de exemplo... é boba mesmo, só para testes.
O primeiro select faz um self-join para listar todos os medicamentos genéricos ao lado de seu equivalente comercial. Aí coloquei um filtro no where para selecionar os que tivessem diferença do atributo de tipo de receita e cujo preço do remédio genérico fosse mais caro do que o comercial (!)
O segundo faz um connect by (select hierárquico) para pegar todos remédios e abaixo deles listar seus genéricos, comparando os atributos. Dá para encapsular esse select numa subquery (ou view) para filtrar discrepâncias e outras coisas.
É um começo, se tiver sugestões ou correções para apontar, fique à vontade.
SQL> create table produto (cod_produto number(10) primary key,
2 nome_produto varchar2(100) not null,
3 preço number(15, 2),
4 tipo_receita varchar2(30) check (tipo_receita in ('A',
5 'B',
6 'ESPECIAL',
7 'TALIDOMIDA',
8 'CONTROLE ESPECIAL')),
9 cod_med_comercial number(10) references produto (cod_produto));
Table created
SQL> begin
2 insert into produto values (1, 'PROD_X', 20.99, 'ESPECIAL', null);
3 insert into produto values (2, 'PROD_X1', 15.99, 'ESPECIAL', 1);
4 insert into produto values (3, 'PROD_X2', 13.99, 'A', 1);
5 insert into produto values (4, 'PROD_N', 9.99, null, null);
6 insert into produto values (5, 'PROD_N1', 7.99, null, 4);
7 commit;
8 end;
9 /
PL/SQL procedure successfully completed
SQL> SELECT p.cod_produto cod_comercial,
2 g.cod_produto cod_generico,
3 p.nome_produto nome_comercial,
4 g.nome_produto nome_generico,
5 p.preço preço_comercial,
6 g.preço preço_generico,
7 p.tipo_receita receita_comercial,
8 g.tipo_receita receita_generico
9 FROM produto p
10 JOIN produto g
11 ON g.cod_med_comercial = p.cod_produto
12 WHERE p.tipo_receita != g.tipo_receita
13 OR p.preço < g.preço;
COD_COMERCIAL COD_GENERICO NOME_COMERCIAL NOME_GENERICO preço_COMERCIAL preço_GENERICO RECEITA_COMERCIAL RECEITA_GENERICO
------------- ------------ -------------- ------------- ----------------- ----------------- ----------------- ----------------
1 3 PROD_X PROD_X2 20,99 13,99 ESPECIAL A
SQL> SELECT p.cod_produto,
2 p.nome_produto,
3 PRIOR p.nome_produto nome_com,
4 p.preço,
5 PRIOR p.preço preço_com,
6 p.tipo_receita,
7 PRIOR p.tipo_receita rec_com
8 FROM produto p
9 START WITH p.cod_med_comercial IS NULL
10 CONNECT BY PRIOR p.cod_produto = p.cod_med_comercial;
COD_PRODUTO NOME_PRODUTO NOME_COM preço preço_COM TIPO_RECEITA REC_COM
----------- ------------ -------- ----------------- ---------- ------------ ---------
1 PROD_X 20,99 ESPECIAL
2 PROD_X1 PROD_X 15,99 20,99 ESPECIAL ESPECIAL
3 PROD_X2 PROD_X 13,99 20,99 A ESPECIAL
4 PROD_N 9,99
5 PROD_N1 PROD_N 7,99 9,99
SQL>
O primeiro select faz um self-join para listar todos os medicamentos genéricos ao lado de seu equivalente comercial. Aí coloquei um filtro no where para selecionar os que tivessem diferença do atributo de tipo de receita e cujo preço do remédio genérico fosse mais caro do que o comercial (!)
O segundo faz um connect by (select hierárquico) para pegar todos remédios e abaixo deles listar seus genéricos, comparando os atributos. Dá para encapsular esse select numa subquery (ou view) para filtrar discrepâncias e outras coisas.
É um começo, se tiver sugestões ou correções para apontar, fique à vontade.
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Ter, 30 Mar 2010 12:01 am
- Localização: PR
Alysson
Bom dia pessoal,
valeu fsitja pelo código, vou dar uma olhada e ver o que eu consigo. Provavelmente só consiga responder no final de semana - os últimos dias estão punk na facul e no trabalho ... - mais pelo que analisei com certeza vai ajudar muito.
retorno assim que possível, valeu!!!
Até mais.
valeu fsitja pelo código, vou dar uma olhada e ver o que eu consigo. Provavelmente só consiga responder no final de semana - os últimos dias estão punk na facul e no trabalho ... - mais pelo que analisei com certeza vai ajudar muito.
retorno assim que possível, valeu!!!
Até mais.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes