Update - Urgente!!!
Olá Pessoal,
Possuo as seguintes tabelas em meu banco de dados Firebird
1.GLCADNBM
CADNBMCOD
CADNCMCOD
2.PECADPEC
CADPECCOD
CADPECCODNBM
3.PENCMPEC
CADPECCOD
CADNCMCOD
Preciso atualizar o campo CADPPECCODNBM da Tabela PECADPEC através da GLCADNBM. Tenho que verificar se o código da peca na tabela PECADPEC através do campo CADPECCOD é o mesmo que está na tabela PENCMPEC. Se for, pegar o seu código CADNCMCOD na PENCMPEC e verificar se esta cadastrado na GLCADNBM. Se o código CANCMCOD da PENCMPEC for iqual ao CADNCMCOD na GLCADNBM eu tenho então que pegar o valor do campo CANBMCOD da GLCADNBM e atualizar na PECCADPEC no campo CADPECCODNBM.
Como posso fazer isso?
Grato
Damata
Possuo as seguintes tabelas em meu banco de dados Firebird
1.GLCADNBM
CADNBMCOD
CADNCMCOD
2.PECADPEC
CADPECCOD
CADPECCODNBM
3.PENCMPEC
CADPECCOD
CADNCMCOD
Preciso atualizar o campo CADPPECCODNBM da Tabela PECADPEC através da GLCADNBM. Tenho que verificar se o código da peca na tabela PECADPEC através do campo CADPECCOD é o mesmo que está na tabela PENCMPEC. Se for, pegar o seu código CADNCMCOD na PENCMPEC e verificar se esta cadastrado na GLCADNBM. Se o código CANCMCOD da PENCMPEC for iqual ao CADNCMCOD na GLCADNBM eu tenho então que pegar o valor do campo CANBMCOD da GLCADNBM e atualizar na PECCADPEC no campo CADPECCODNBM.
Como posso fazer isso?
Grato
Damata
Carlos Mata
Curtidas 0
Respostas
Emerson Nascimento
26/12/2010
update PECADPEC set
CADPECCODNBM =
coalesce((select G.CADNBMCOD from GLCADNBM G
inner join PENCMPEC P on P.CADNCMCOD = G.CADNCMCOD
where P.CADPECCOD = PECADPEC.CADPECCOD), PECADPEC.CADPECCODNBM)
acho que assim funciona...
CADPECCODNBM =
coalesce((select G.CADNBMCOD from GLCADNBM G
inner join PENCMPEC P on P.CADNCMCOD = G.CADNCMCOD
where P.CADPECCOD = PECADPEC.CADPECCOD), PECADPEC.CADPECCODNBM)
acho que assim funciona...
GOSTEI 0
Carlos Mata
26/12/2010
update PECADPEC set
CADPECCODNBM =
coalesce((select G.CADNBMCOD from GLCADNBM G
inner join PENCMPEC P on P.CADNCMCOD = G.CADNCMCOD
where P.CADPECCOD = PECADPEC.CADPECCOD), PECADPEC.CADPECCODNBM)
acho que assim funciona...
CADPECCODNBM =
coalesce((select G.CADNBMCOD from GLCADNBM G
inner join PENCMPEC P on P.CADNCMCOD = G.CADNCMCOD
where P.CADPECCOD = PECADPEC.CADPECCOD), PECADPEC.CADPECCODNBM)
acho que assim funciona...
Amigo,
Ao excutar o comando está apresentando o erro:
Statement Failed, SQLCODE = -811
Multiple Rows in Singleton select.
GOSTEI 0
Ricardo Araujo
26/12/2010
pode colocar a estrutura da tabelas?
GOSTEI 0
Carlos Mata
26/12/2010
pode colocar a estrutura da tabelas?
Ricardo,
Segue a estrutura das tabelas:
PECADPEC
--------------
# FK PK Field Name Field Type Size
1 0 1 CADPECCOD CHAR 22
2 0 0 CADPECDES CHAR 20
3 0 0 CADPECCODSEQ CHAR 22
4 0 0 CADPECCODCLA CHAR 22
5 0 0 MASPECCOD CHAR 1
6 0 0 FORNECNRO INTEGER
7 0 0 MARPECCOD SMALLINT
8 0 0 CADPECCODNBM CHAR 10
9 0 0 UNIMEDCOD CHAR 2
10 0 0 CADPECQTDEMB INTEGER
11 0 0 CADPECIDTEMBAL CHAR 1
12 0 0 GRDEPECOD CHAR 2
13 0 0 CADPECIDTDESCONTO CHAR 1
14 0 0 NATPECCOD CHAR 3
15 0 0 CADPECPERIPI NUMERIC 4 2
16 0 0 CADPECVLRPESO NUMERIC 7 3
17 0 0 CADPECIDTPROC CHAR 1
18 0 0 CADPECIDTRESERVA CHAR 1
19 0 0 CADPECIDTRESTEC CHAR 1
20 0 0 CADPECIDTSTATUS CHAR 1
21 0 0 CADPECDATATUCAD INTEGER
PENCMPEC
--------------
# FK PK Field Name Field Type Size
1 0 1 CADPECCOD CHAR 22
2 0 0 CADNCMCOD CHAR 10
3 0 0 NCMPECCODBAR CHAR 25
GLCADNBM
--------------
# FK PK Field Name Field Type Size
1 0 1 CADNBMCOD CHAR 10
2 0 0 CADNBMDES VARCHAR 255
3 0 0 CADNCMCOD CHAR 10
GOSTEI 0