Fórum Select retornando resultados infinitos. #499550
29/10/2014
0
Criei um select para comparar dados entre tabelas retornar apenas os valores da busca executada, porem o result é catastrófico, retorna sempre mais de 30 mil linhas.
SELECT it.cd_ord_com CODIGO_SOLICITACAO_COMPRA
,oc.cd_ord_com CODIGO_ORDEM_COMPRA
,it.cd_produto CODIGO_PRODUTO
,po.ds_produto DESCRICAO_PRODUTO
,un.ds_unidade DESCRICAO_UNIDADE
,oc.cd_fornecedor CODIGO_FORNECEDOR
,fr.nm_fantasia NOME_FANTASIA
,ic.ds_marca DESCRICAO_MARCA
,ic.qt_cotada QUANTIDADE_COTADA
,ic.vl_unitario VALOR_UNITARIO
,sc.tp_sol_com TIPO_SOLITACAO_COMPRA
,sc.tp_situacao SITUACAO_TIPO
FROM itord_pro it,
itsol_com io,
produto po,
uni_pro un,
for_com fo,
fornecedor fr,
itcol_pro ic,
sol_com sc,
ord_com oc,
coleta ct
where sc.tp_situacao in ('P','F')
and sc.tp_sol_com = 'P'
and it.cd_produto = po.cd_produto
and oc.cd_fornecedor = fo.cd_fornecedor
and ct.cd_coleta = ic.cd_coleta
and ct.cd_fornecedor = fr.cd_fornecedor
and un.cd_uni_pro = ic.cd_uni_pro
and ic.cd_produto = po.cd_produto
and it.cd_ord_com = oc.cd_ord_comLucas Perin
Curtir tópico
+ 0Posts
29/10/2014
Jair N.
(relacionamento de tudo para todos...).
Gostei + 0
29/10/2014
Lucas Perin
Gostei + 0
29/10/2014
Marisiana Battistella
Aconselho a utilizar, pois facilita muito mais a compreensão do SQL, evita o uso de JOIN errados, além de melhorar a performance do SQL.
Gostei + 0
29/10/2014
Lucas Perin
Gostei + 0
29/10/2014
Jair N.
Atc.
Gostei + 0
29/10/2014
Marisiana Battistella
É pelos motivos que o Jair descreveu que você deve utilizar o padrão ANSI.
Você utilizou 10 tabelas na cláusula FROM e na claúsula WHERE você fez 7 JOIN ligando essas tabelas...
Gostei + 0
29/10/2014
Marisiana Battistella
SELECT it.cd_ord_com as CODIGO_SOLICITACAO_COMPRA,
oc.cd_ord_com as CODIGO_ORDEM_COMPRA,
it.cd_produto as CODIGO_PRODUTO,
po.ds_produto as DESCRICAO_PRODUTO,
un.ds_unidade as DESCRICAO_UNIDADE,
oc.cd_fornecedor as CODIGO_FORNECEDOR,
fr.nm_fantasia as NOME_FANTASIA,
ic.ds_marca as DESCRICAO_MARCA,
ic.qt_cotada as QUANTIDADE_COTADA,
ic.vl_unitario as VALOR_UNITARIO,
sc.tp_sol_com as TIPO_SOLITACAO_COMPRA,
sc.tp_situacao as SITUACAO_TIPO
FROM itord_pro it
join itsol_com io
on ----- incluir join
join produto po
on it.cd_produto = po.cd_produto
join for_com fo
on ------ incluir join
join fornecedor fr
on ------ incluir join
join itcol_pro ic
on ic.cd_produto = po.cd_produto
join uni_pro un
on un.cd_uni_pro = ic.cd_uni_pro
join sol_com sc
on --- incluir join
join ord_com oc
on oc.cd_fornecedor = fo.cd_fornecedor
and it.cd_ord_com = oc.cd_ord_com
join coleta ct
on ct.cd_coleta = ic.cd_coleta
and ct.cd_fornecedor = fr.cd_fornecedor
where sc.tp_situacao in ('P','F')
and sc.tp_sol_com = 'P'
Você deve ver quais são os relacionamentos entre essas tabelas e referenciá-las corretamente nos JOINs.
Gostei + 0
21/11/2014
Marisiana Battistella
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)