Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jack_Manteiga

Perdidinho em sintaxe SQL

Recommended Posts

Galera, a receita de bolo é a seguinte:

supondo, tenho a tabela inventario:

 

campos

 

cod produto

cod fabricante

usuario

data

 

e a tabela produtos

 

cod produto

cod fabricante

ref fabricante

preço

etc...

 

o que eu quero é o seguinte:

 

quero que a cada [produto] cujo cod fabricante seja = x

 

insert into inventario (cod produto, cod fabricante, usuario, data) values (cod produto(pesquisado), cod fabricante(pesquisado), eu, hoje)

 

entenderam?

 

é que eu não sei passar isso pro sql.

 

tipo, começo com,

 

select cod produto, cod fabricante from produtos where cod fabricante = x

 

e depois? como que monto o laço de repetição?

 

como que me refiro aos registros que o select me retornou?

 

insert into inventario (cod produto, cod fabricante, usuario, data) values (cod produto(pesquisado), cod fabricante(pesquisado), eu, hoje)

 

como que passo pro próximo registro da pesquisa?

 

é isso que eu preciso saber.

 

bom galera, desde já muito obrigado.

A galera aqui do imasters é fera e sempre tem me ajudado nesses detalhes aí vlw msm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse tópico mostra o uso de cursor e váriaveis, com esse exemplo vai ajudar a resolver o seu problema: http://forum.imasters.com.br/index.php?showtopic=224865

 

bons estudos http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

set nocount on

--tabelas para testes

create table produto (ID_PRODUTO int, NOM_PRODUTO varchar(50))

insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (1, 'PRODUTO 1')

insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (2, 'PRODUTO 2')

insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (3, 'PRODUTO 3')

 

create table fornecedor(ID_FORNECEDOR int, NOM_FORNECEDOR varchar(50))

insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (1, 'FORNECEDOR 1')

insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (2, 'FORNECEDOR 2')

insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (3, 'FORNECEDOR 3')

insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (4, 'FORNECEDOR 4')

 

 

create table forn_prod (ID_PRODUTO int, ID_FORNECEDOR int)

insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 1)

insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (2, 1)

insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 2)

insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (2, 2)

insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 4)

 

 

 

--tabela temporaria

create table #temp (NOM_PRODUTO varchar(50), NOM_FORNECEDOR varchar(4000))

 

--select distinct para buscar somente produtos que estejam na tabela forn_prod

--cursor x: produtos

declare x cursor for select distinct forn_prod.ID_PRODUTO, NOM_PRODUTO from forn_prod

inner join produto on produto.ID_PRODUTO = forn_prod.ID_PRODUTO

--variaveis para o cursor x

declare @ID_PRODUTO int

declare @NOM_PRODUTO varchar(50)

--variável para concatenar o nome dos fornecedores

declare @NOM_FORNECEDOR_conc varchar(8000)

open x

fetch next from x into @ID_PRODUTO,@NOM_PRODUTO

while @@fetch_Status=0

begin

--zerando variável de concatenação

set @NOM_FORNECEDOR_conc = ''

--cursor y: fornecedores relacionados com os produtos, vai concatenar os fornecedores na variável @NOM_FORNECEDOR_conc

declare y cursor for select NOM_FORNECEDOR from fornecedor

inner join forn_prod on forn_prod.ID_FORNECEDOR = fornecedor.ID_FORNECEDOR

where forn_prod.ID_PRODUTO = @ID_PRODUTO

--variavel para o cursor y

declare @NOM_FORNECEDOR varchar(50)

open y

fetch next from y into @NOM_FORNECEDOR

while @@fetch_Status=0

begin

--concatenando fornecedores na variável @NOM_FORNECEDOR_conc

set @NOM_FORNECEDOR_conc = @NOM_FORNECEDOR_conc + @NOM_FORNECEDOR + ', '

 

--loop do cursor y

fetch next from y into @NOM_FORNECEDOR

end

--fim do cursor y

close y

deallocate y

 

--retira última virgula

set @NOM_FORNECEDOR_conc = substring(@NOM_FORNECEDOR_conc, 1, len(@NOM_FORNECEDOR_conc)-1) --insere na tabela virtual

insert into #temp (NOM_PRODUTO, NOM_FORNECEDOR )

values (@NOM_PRODUTO, @NOM_FORNECEDOR_conc)

 

--loop do cursor x

fetch next from x into @ID_PRODUTO,@NOM_PRODUTO

end

--fim do cursor x

close x

deallocate x

 

--consulta da tabela temporaria

select * from #temp

 

--apagando tabela temporaria

drop table #temp

--apagando tabelas para testes

drop table produto

drop table fornecedor

drop table forn_prod

 

 

Fala aí Eriva, fmz? Então cara, pelo que eu entendi, o cursor y eu não vou precisar usar, certo?

 

e, deixe-me ver... quando você declara o cursor x, selecionando os campos ID_PRODUTO e NOM_PRODUTO, esses campos serão retornados pelo fetch, nas variáveis @ID_PRODUTO e @NOM_PRODUTO?

 

Ah, o que é tb o fetch? hehe O que ele faz e tal?

 

Eriva, desde já agradeço muito pela ajuda novamente eheh. Vlw mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eriva, não querendo abusar muito mas ja abusando, eu tenho na tabela um campo datetime com o seguinte formato:

 

2007-02-22 10:40:41.000

 

tem alguma função que m,e retorne a data e a hora nesse formato no sql já?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala ae Eriva... então fera, consegui fazer a parada. Fala pra você... quando vi o code no seu tutorial eu qse levei um susto cara, mas ai eu fui vendo, revendo e tal, e passei pro sql, aí vi que não era nenhum monstro, heheheh

 

o lance mesmo agora tá só nas datas, como que ue faço pra o sql me retornar a data e hora atual?

 

vlw mesmo, você é o cara do sql, hehehe, curto pq você não dá a resposta, mas o caminho ;)

 

ah, e você teria aí alguma apostila falando sobre vb com sql server?

vlw eriva o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

sds camarada Jack Manteiga,

Fala ae Eriva... então fera, consegui fazer a parada. Fala pra você... quando vi o code no seu tutorial eu qse levei um susto cara, mas ai eu fui vendo, revendo e tal, e passei pro sql, aí vi que não era nenhum monstro, heheheh

beleza, fico contente que conseguiu

o lance mesmo agora tá só nas datas, como que ue faço pra o sql me retornar a data e hora atual?

verifique esse tópico do camarada jothaz: http://forum.imasters.com.br/index.php?showtopic=224454

vlw mesmo, você é o cara do sql, hehehe, curto pq você não dá a resposta, mas o caminho Imagem Postada

vlw, essa é a idéia

ah, e você teria aí alguma apostila falando sobre vb com sql server?

vlw eriva o/

apostila não sei, mas te indico o canal de vb do imasters: http://imasters.com.br/secao/visual_basic/ e o site do macoratti: http://www.macoratti.net/

 

abs

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.