Ir para conteúdo
  • Cadastre-se

dev botao

Ajuda Com Sql - 2 Tabelas


  • Este tópico foi criado há 3824 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa noite amigos.

 

Tenho uma tabela PRODUTOS e seus campos: CODIGO, DESCRICAO, PRECO ...etc e uma outra tabela chamada ESTOQUE e seus campos: CODIGO, QUANTIDADE e LOJA, onde o "CODIGO" é o campo em comum entre as duas tabelas.

É possível um Sql que exiba o resultado numa Grid da seguinte forma:

 

[CODIGO][DESCRICAO][PRECO][QUANTIDADE][LOJA]

 

Obrigado.

 

Att,

 

Sérgio

Editado por gigainfo
Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Boa tarde.

 

Tenta isso:

 

select PRODUTO.CODIGO, PRODUTO.DESCRICAO, PRODUTO.PRECO, ESTOQUE.QUANTIDADE, ESTOQUE.LOJA

from PRODUTO

inner join ESTOQUE on (PRODUTO.CODIGO = ESTOQUE.CODIGO)

 

onde = PRODUTO (Sua tabela de Produto)

            ESTOQUE (Suta tabela de estoque)

 

Obs: Pode variar alguma coisa dependendo do banco de dados

 

Atenciosamente

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

Link para o comentário
Compartilhar em outros sites

Olá... dessa forma o produto se repete na grid varias vezes, conforme a quantidade de registros que existirem na tabela ESTOQUE. Eu preciso exibir (na horizontal) apenas uma vez o produto.

Obrigado.

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Tente dessa forma

 

SELECT DISTINCT PRODUTO.CODIGO, PRODUTO.DESCRICAO, PRODUTO.PRECO, SUM(ESTOQUE.QUANTIDADE) as Quantidade,
ESTOQUE.LOJA FROM PRODUTO
inner join ESTOQUE on (PRODUTO.CODIGO = ESTOQUE.CODIGO)
GROUP BY PRODUTO.CODIGO, PRODUTO.DESCRICAO, PRODUTO.PRECO, ESTOQUE.LOJA.

 

o comando SUM, pode ser usado pra somar a quantidade de todos os registro da tabela estoque e mostrar apenas uma quantidade sendo o total.

 

Espero que ajude.

Editado por Solivan

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

  • Consultores

Eu preciso exibir (na horizontal) apenas uma vez o produto.

   Você quer dizer "uma vez o produto POR LOJA", certo? Se for assim, a solução do Solivan atende seu requisito.

   Agora, se você quer o total, independente da loja, então basta remover as menções do campo LOJA.

   Creio, no entanto, que em nenhum dos dois casos é necessário a palavra "DISTINCT".

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Crie uma View no seu DB, e faça o SELECT da view, filtrando o que você quiser.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Eu gostaria de ver o produto apenas uma vez e suas quantidades (por loja) na mesma linha, veja a imagem em anexo.

O exemplo que usei na imagem já possui os campos fixos, mas eu queria criar algo dinâmico.

 

De qualquer forma eu agradeço as respostas.

 

Att,

 

Sérgio

post-53-0-25671400-1385121544_thumb.jpg

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores

Você quer que ele liste assim?

 

[CODIGO][DESCRICAO][PRECO][QUANTIDADE][LOJA1][LOJA2][LOJA3][LOJA4]

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Assim:

CREATE OR ALTER VIEW VIEW_ESTOQUE(
    PRODUTO,
    DESCRICAO,
    LOJA,
    ESTOQUE
AS
SELECT 
       TAB1.PRODUTO,
       TAB1.DESCRICAO,
       TAB2.LOJA,
       TAB2.ESTOQUE
FROM TAB2
INNER JOIN TAB1 ON TAB1.PRODUTO = TAB2.PRODUTO
;

Após ter a view no seu DB, faça a filtragem assim:

 

SELECT * FROM VIEW_ESTOQUE

WHERE LOJA = 01

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Ops, desculpe após postar vi sua real necessidade, a minha dica não irá funcionar para essa necessidade.

  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Você quer que ele liste assim?

 

[CODIGO][DESCRICAO][PRECO][QUANTIDADE][LOJA1][LOJA2][LOJA3][LOJA4]

 

Assim:

[CODIGO][DESCRICAO][PRECO][LOJA1][LOJA2][LOJA3][LOJA4]

 

Sérgio

Editado por gigainfo
Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

SELECT

PRODUTO,

DESCRICAO,

SELECT TAB2.ESTOQUE_LOJA1 FROM TAB2 WHERE TAB2.PRODUTO = TAB1.PRODUTO AND TAB2.LOJA = '01',

SELECT TAB2.ESTOQUE_LOJA2 FROM TAB2 WHERE TAB2.PRODUTO = TAB1.PRODUTO AND TAB2.LOJA = '02',

SELECT TAB2.ESTOQUE_LOJA3 FROM TAB2 WHERE TAB2.PRODUTO = TAB1.PRODUTO AND TAB2.LOJA = '03'

FROM TAB1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O que ele quer é uma tabela crosstab pelo que entendi, até onde sei somente o SQL Server e Oracle possuem uma forma de fazer isso direto pelo SQL, o restante dos bancos que usam o SQL padrão não permitem, eu faço isso hoje manualmente, faço um select retornando tudo, dai monta dinamicamente usando um Clientdataset temporario, funciona muito bem.

 

Existe também um grid da DevExpress que permite fazer isso somente configurando, o componente se chama PivotGrid.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Consultores

O que ele quer é uma tabela crosstab pelo que entendi, até onde sei somente o SQL Server e Oracle possuem uma forma de fazer isso direto pelo SQL, o restante dos bancos que usam o SQL padrão não permitem, eu faço isso hoje manualmente, faço um select retornando tudo, dai monta dinamicamente usando um Clientdataset temporario, funciona muito bem.

 

Existe também um grid da DevExpress que permite fazer isso somente configurando, o componente se chama PivotGrid.

  Acho que com Firebird 2.1 é possível fazer isso usando CTE (Common Table Expressions).

Sem saber o BD utilizado e os requisitos específicos não dá pra ajudar muito mais.

  Outra opção no Firebird é usar Stored Procedures. Isso funcionaria até mesmo no FB 1.5

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

O que ele quer é uma tabela crosstab pelo que entendi, até onde sei somente o SQL Server e Oracle possuem uma forma de fazer isso direto pelo SQL, o restante dos bancos que usam o SQL padrão não permitem, eu faço isso hoje manualmente, faço um select retornando tudo, dai monta dinamicamente usando um Clientdataset temporario, funciona muito bem.

 

Existe também um grid da DevExpress que permite fazer isso somente configurando, o componente se chama PivotGrid.

Vou fazer dessa forma Regys. Do resultado vou jogar em um CDS. Vai funcionar.

 

Agradeço a dica !

 

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores

Elton, valeu pela dica, eu ainda não conhecia o recurso, que vergonha a minha :D

 

Ih rapaz, que nada. A gente vive aprendendo.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

No MySQL você pode usar procedures para fazer isso criando tabelas temporarias na memoria

DROP PROCEDURE `user_hier`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `user_hier`(in team_id varchar(50))
BEGIN
declare count int;
declare tmp_team_id varchar(50);
CREATE TEMPORARY TABLE res_hier(user_id varchar(50),team_id varchar(50))engine=memory;
CREATE TEMPORARY TABLE tmp_hier(user_id varchar(50),team_id varchar(50))engine=memory;
set tmp_team_id = team_id;
SELECT COUNT(*) INTO count FROM user_table WHERE user_table.team_id=tmp_team_id;
WHILE count>0 DO
insert into res_hier select user_table.user_id,user_table.team_id from user_table where user_table.team_id=tmp_team_id;
insert into tmp_hier select user_table.user_id,user_table.team_id from user_table where user_table.team_id=tmp_team_id;
select user_id into tmp_team_id from tmp_hier limit 0,1;
select count(*) into count from tmp_hier;
delete from tmp_hier where user_id=tmp_team_id;
end while;
select * from res_hier;
drop temporary table if exists res_hier;
drop temporary table if exists tmp_hier;
end

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3824 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...