select messy

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Poston Wed, 26 Dec 2007 5:18 pm

People, Googling the origin of a vision, found in the the following select: As I don't have much knowledge, I couldn't understand the structure of this selection, my question is this;

I'vê tried several way add more a join, it would be the description of the product (ds_produto field of the product table), I thought it was enough to add the join in the penultimate and last FROM/WHERE, but it didn't work out, in which select would have to add the join?

Another question is what's the point of this select with Null td_contagem and 0 hr_contagem?

Code: Select all
Select Copia_Estoque.Cd_Contagem
     , Null          dt_contagem
     , Null          hr_contagem
     , Null          dt_geracao
     , Null          hr_geracao
     , Copia_Estoque.cd_produto
     , 0 qt_estoque
     , 0 qt_estoque_doado
     , 0 vl_custo_medio


Code: Select all
Select Saldo_Atual.cd_contagem
     , Saldo_Atual.dt_contagem
     , Saldo_Atual.hr_contagem
     , Saldo_Atual.dt_geracao
     , Saldo_Atual.hr_geracao
     , Saldo_Atual.cd_produto
     , Saldo_Atual.Qt_estoque
     , Saldo_Atual.Qt_estoque_doado
     , Saldo_Atual.vl_custo_medio
     , Nvl(Saldo_Anterior.qt_anterior, 0) Qt_Anterior
     , Nvl(Saldo_Anterior.qt_anterior_doado, 0) Qt_Anteior_Doado
     , Saldo_Atual.ds_unidade
  From (
Select contagem.cd_contagem
     , contagem.dt_contagem
     , contagem.hr_contagem
     , contagem.dt_geracao
     , contagem.hr_geracao
     , itcontagem.cd_produto
     , Sum(itcontagem.qt_estoque * uni_pro.vl_Fator) qt_estoque
     , Sum(itcontagem.qt_estoque_doado * uni_pro.vl_fator) qt_estoque_doado
     , avg(itcontagem.vl_custo_medio / uni_pro.vl_fator ) vl_custo_medio
     , 0 qt_anterior
     , 0 qt_anterior_doado
     , uni_pro.ds_unidade
  From Dbamv.Contagem
     , Dbamv.ItContagem
     , Dbamv.Uni_Pro
Where Contagem.Cd_Contagem = ItContagem.Cd_Contagem
   And ItContagem.Cd_Uni_Pro = Uni_Pro.Cd_Uni_Pro
Group By Contagem.Cd_Contagem
       , contagem.Dt_Contagem
       , contagem.Hr_Contagem
       , contagem.Dt_Geracao
       , contagem.Hr_Geracao
       , itcontagem.Cd_Produto
       , Uni_Pro.Ds_Unidade
       ) Saldo_Atual
     , (
Select Copia_Estoque.Cd_Contagem
     , Null          dt_contagem
     , Null          hr_contagem
     , Null          dt_geracao
     , Null          hr_geracao
     , Copia_Estoque.cd_produto
     , 0 qt_estoque
     , 0 qt_estoque_doado
     , 0 vl_custo_medio
     , Sum(Copia_Estoque.Qt_Estoque) qt_anterior
     , Sum(Copia_Estoque.Qt_Estoque_Doado) qt_anterior_doado
     , Null  ds_unidade
  From Dbamv.Copia_Estoque
Group By Copia_Estoque.Cd_Contagem
       , Copia_Estoque.cd_produto
       ) Saldo_Anterior
Where Saldo_Atual.Cd_Contagem = Saldo_Anterior.Cd_Contagem(+)
  And Saldo_Atual.Cd_Produto = Saldo_Anterior.Cd_Produto(+)
marquesjr
Location: Fortaleza - CE

Poston Thu, 27 Dec 2007 7:06 am

Brother, to add the description of the product, you must provide the product table (in your FROM, via a JOIN).
As we do not know your base, I couldn't know which one and if she's in your select.

As for the value NULL and 0 (zero) on your select, it should probably join a UNION and, by not having these values in this table, NULL and an Alias for it.

Any questions, send ai, beleza?
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Thu, 27 Dec 2007 9:23 am

all beleza, coming new year and the guy full of doubts, is soft, but it's a simple question really basic, I'vê been hammering to insert the product description in this select the join would be this:
Code: Select all
itcontagem.cd_produto = produto.cd_produto
one of the attempt was the following:
Code: Select all
Select Saldo_Atual.cd_contagem
     , Saldo_Atual.dt_contagem
     , Saldo_Atual.dt_geracao
     , Saldo_Atual.cd_produto
     , Saldo_Atual.ds_unidade
     , produto.ds_produto
     , Saldo_Atual.Qt_estoque AS QT_APOS
     , Nvl(Saldo_Anterior.qt_anterior, 0) AS QT_ANTERIOR
     , Saldo_Atual.vl_custo_medio
  From (
Select contagem.cd_contagem
     , contagem.dt_contagem
     , contagem.dt_geracao
     , itcontagem.cd_produto
     , produto.ds_produto
     , Sum(itcontagem.qt_estoque * uni_pro.vl_Fator) qt_estoque
     , avg(itcontagem.vl_custo_medio / uni_pro.vl_fator ) vl_custo_medio
     , 0 qt_anterior
     , uni_pro.ds_unidade
  From Dbamv.Contagem
     , Dbamv.ItContagem
     , Dbamv.Uni_Pro
     , Dbamv.produto
Where Contagem.Cd_Contagem = ItContagem.Cd_Contagem
   And ItContagem.Cd_Uni_Pro = Uni_Pro.Cd_Uni_Pro
   AND itcontagem.cd_produto = produto.cd_produto
Group By Contagem.Cd_Contagem
       , contagem.Dt_Contagem
       , contagem.Dt_Geracao
       , itcontagem.Cd_Produto
       , Uni_Pro.Ds_Unidade
       ) Saldo_Atual
     , (
Select Copia_Estoque.Cd_Contagem
     , Null          dt_contagem
     , Null          dt_geracao
     , Copia_Estoque.cd_produto
     , produto.ds_produto
     , 0 qt_estoque
     , 0 vl_custo_medio
     , Sum(Copia_Estoque.Qt_Estoque) qt_anterior
     , Null  ds_unidade
  From Dbamv.Copia_Estoque
Group By Copia_Estoque.Cd_Contagem
       , Copia_Estoque.cd_produto
       ) Saldo_Anterior
Where Saldo_Atual.Cd_Contagem = Saldo_Anterior.Cd_Contagem(+)
  And Saldo_Atual.Cd_Produto = Saldo_Anterior.Cd_Produto(+)
  ORDER BY dt_contagem;
and presented the following error: ORA-00904: \"product\". \"DS_PRODUTO \": invalid identifier
marquesjr
Location: Fortaleza - CE

Poston Thu, 27 Dec 2007 9:25 am

Brother, the first excerpt from the select that you changed, try it like this:
Code: Select all
Select Saldo_Atual.cd_contagem
     , Saldo_Atual.dt_contagem
     , Saldo_Atual.dt_geracao
     , Saldo_Atual.cd_produto
     , Saldo_Atual.ds_unidade
     , Saldo_Atual.ds_produto
     , Saldo_Atual.Qt_estoque AS QT_APOS
     , Nvl(Saldo_Anterior.qt_anterior, 0) AS QT_ANTERIOR
     , Saldo_Atual.vl_custo_medio
  From (
...
the Alias is Saldo_Atual, so the error.

qualquer thing, send it to us.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Thu, 27 Dec 2007 9:32 am

Select Copia_Estoque. Cd_Contagem, Null, Null, dt_geracao dt_contagem Copia_Estoque.cd _ product ds_produto . product got the same error, only the highlighted line
marquesjr
Location: Fortaleza - CE

Poston Thu, 27 Dec 2007 9:45 am

You have a products table in this stretch there brother?
If you do not have, and is a UNION, put it:
Code: Select all
null produto
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Thu, 27 Dec 2007 10:00 am

boy, isn't that worked really ..., select violent. Thanks brother!
marquesjr
Location: Fortaleza - CE

Poston Thu, 27 Dec 2007 10:01 am

beleza brother, needing, account with us here.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Thu, 27 Dec 2007 10:52 am

enjoying the Christmas spirit, I come bearing a new doubt on time:
Code: Select all
     , Sum(itcontagem.qt_estoque / uni_pro.vl_Fator) qt_estoque
     , avg(itcontagem.vl_custo_medio * uni_pro.vl_fator ) vl_custo_medio
     , 0 qt_anterior
how do I use a splitter on the line:
Code: Select all
     , 0 qt_anterior
as used on the line;

Code: Select all
     , Sum(itcontagem.qt_estoque / uni_pro.vl_Fator) qt_estoque
want to divide the qt_anterior by vl_fator.

I tried the following codes:
Code: Select all
     , (0 qt_anterior / uni_pro.vl_fator)
Code: Select all
     , 0 qt_anterior / uni_pro.vl_fator
Code: Select all
     , 0 (qt_anterior / uni_pro.vl_fator)
marquesjr
Location: Fortaleza - CE

Poston Thu, 27 Dec 2007 10:57 am

but the ' qt_anterior ' you had not created as Alias?

If it is, I think there's no way to put this aí in some calculus!, unless you really have this value elsewhere, the qt_anterior as value/field.
Porva
Location: São Paulo/SP

Rafael S. Nunes
São Paulo/SP

Poston Thu, 27 Dec 2007 11:18 am

the previous qt's copia_estoque table.

Copia_Estoque. Qt_Estoque
marquesjr
Location: Fortaleza - CE



Return to SQL

Who is online

Users browsing this forum: Bing [Bot] and 2 guests