Ir para conteúdo

POWERED BY:

Arquivado

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

Matheusao

Consulta bem complicada

Recommended Posts

Aê gente, bão? Seguinte, tenho uma tabela de produtos onde há os campos: fornecedor | agrupamento | tipo

 

Nessa tabela, os campos "fornecedor" e "tipo" recebem códigos vindos de outras tabelas e o "agrupamento" é texto mesmo. Então para que a consulta exiba os dados fiz assim

 

<%strQuery = "SELECT codigo,fornecedor,agrupamento,tipo,descricao,padrao FROM produtos ORDER BY fornecedor,agrupamento,tipo"Set objRs = objConn.execute(strQuery)			While not objRs.EOF	codigo = objRs("codigo")	fornecedor = objRs("fornecedor")	tipo = objRs("tipo")	descricao = objRs("descricao")	padrao = objRs("padrao")strQuery2 = "SELECT cod_produto,qtde_r,qtde_c,local FROM estoque WHERE cod_produto = "&codigoSet objRs2 = objConn.execute(strQuery2)					strQuery3 = "SELECT SUM (qtde_r) AS total_r FROM estoque WHERE cod_produto = "&codigoSet objRs3 = objConn.execute(strQuery3)strQuery31 = "SELECT SUM (qtde_c) AS total_c FROM estoque WHERE cod_produto = "&codigoSet objRs31 = objConn.execute(strQuery31)			strQuery4 = "SELECT fabrica,nome_fantasia FROM fornecedores WHERE codigo ="&fornecedor&""Set objRs4 = objConn.execute(strQuery4)											strQuery5 = "SELECT tipo FROM tipos_produtos WHERE codigo = "&tipo&""Set objRs5 = objConn.execute(strQuery5)

A consulta funciona belezinha sem problema. O que rola é que preciso colocar em ordem alfabética como no primeiro SELECT, só que está com código nos campos então não está ordenando.

 

Estou pensando em repetir o primeiro SELECT mais abaixo, mas ainda tô meio confuso. Alguém pode me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

as tabelas estão relacionadas, certo? então faça um inner join e acabe com esse monte de sql, ai você pode manipular os dados de maneira muito mais pratica

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todas as tabelas estão relacionadas à "produtos", mas não estão entre si. Já tentei uma vez, mas não consegui usar o INNER JOIN, nem lembro a sitaxe.O que etou tentando no momento é colocar mais uma sql antes de tudo isso, puxando a lista de fornecedores em ordem alfabética, para então dar sequencia.O que acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se quiser podemos tentar fazer esse inner join o que acha? diga quais campos estão relacionados entre si pra facilitar o entendimento

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamo lá, seguinte

 

ex:

 

Tabela produtos

codigo | fornecedor | agrupamento | tipo

1 | 12 |nomedogrupo| 7

 

Tabela fornecedores

codigo | fabrica | nome_fantasia

12 | nome | nomefantasia

 

Tabela tipos_produtos

codigo | tipo

7 | guarda roupa

 

Deu pra entender?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

fikaria amis ou menos assim o from :select * from produtos inner join fornecedores on produtos.codigo=fornecedores.codigo inner join fornecedores on tipos_produtos on fornecedores.codigo=tipos_produtos.codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não querendo fugir muito do tópico.. mas qual a idéia do Inner Join??Ele já relaciona que o valor "12" da coluna fornecedor tabela produto seja o valor que está para a tabela "fornecedores"??Nunca entendi o funcionamento dele.. se alguémtiveralguma explicação sucinta ai.. creio que ele seja muito útil..pois sempre faço os relacionamentos na "gambiarra"...rsValeu e desculpa pelo off topic!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não consegui montar a sintaxe. Vou colocar o problema completo:

 

A tabela principal é "produtos", abaixo listarei os campos e as tabelas relacionadas:

 

fornecedor > ligado ao campo codigo da tabela fornecedorestipo	   > ligado ao campo codigo da tabela tipos_produtospadrao	 > ligado ao campo codigo da tabela padroescodigo	 > ligado ao campo cod_produto da tabela estoque

O codigo vem várias vezes, pois a cada insersão no estoque uma linha é criada para criar um historico futuramente, então teria ainda de somar os valores dos campos qtde_r e qtde_c da tabela estoque

 

Preciso mesmo dessa ajuda, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo assim:

 

campos_produtos = "produtos.codigo,produtos.fornecedor,produtos.agrupamento,produtos.tipo,produtos.descricao,produtos.padrao"campos_fornecedores = "fornecedores.codigo,fornecedores.fabrica,fornecedores.nome_fantasia"campos_tipo = "tipos_produtos.codigo,tipos_produtos.tipo"campos_padroes = "padroes.codigo,padroes.padrao"strQuery = "SELECT '"&campos_produtos&"','"&campos_fornecedores&"','"&campos_tipo&"','"&campos_padroes&"' FROM (((produtos "strQuery = strQuery & " INNER JOIN fornecedores ON fornecedores.codigo = produtos.fornecedor)"strQuery = strQuery & " INNER JOIN tipos_produtos ON tipos_produtos.codigo = produtos.tipo)"strQuery = strQuery & " INNER JOIN padroes ON padroes.codigo = produtos.padrao)"strQuery = strQuery & " ORDER BY fornecedores.nome_fantasia,produtos.agrupamento,tipos_produtos.tipo"

Não tá dando erro nenhum até aqui, está certo isso?

 

Mas logo abaixo quando tento recuperar dados

 

codigo_produto = objRs("codigo")

ou

 

codigo_produto = objRs("produtos.codigo")

ele diz que não pode encontrar o item.

 

Como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, desculpa eu estar dando canseira, mas é que eu preciso disso pra hoje, então se alguém puder me ajudar, agradeço demais.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de abrir o Recordeset escreve na tela o valor de strQuery e post aqui o resultado so pra ver se realmente voce esta selecionando o que voce quer recuperar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de conseguir. O que tava pegando era que todas as tabelas tinham um campo "codigo" então parece que tava confundindo a pesquisa.Mudei o nome dos campos e funcionou perfeitamente. Agora vou partir pra segunda etapa que é acrescentar um SUM na pesquisa.Valeu pelo interesse, se der pau no SUM volto a postar hehehe.Ah, outra coisa na tabela tem um campo que é o nome do fornecedor. Dá pra mostrar o nome de cada fornecedor apenas uma vez, seguido de seus respectivos produtos, em vez de ficar repetindo pra todos os produtos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce poderia colocar um IF onde exibetipo assim, armazena o forcededor em uma variavelFornecedor = ""E dentro do loop voce perguntaIF RS("Forncedor") <> Fornecedor THEN Fornecedor = RS("Forncedor") Response.write(Fornecedor)END IFcom isso voce nao repetirá mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

tranquilo tiozinho http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.