Ir ao conteúdo
  • Cadastre-se
heliocassiofsa

Comando

Recommended Posts

preciso de ajudar no comando abaixo

o mesmo traz o mesmo valor da tabela1 para cada item da tabela2

select t1.valor as valor_documento, t1.documento, t2.nome_produto,t2.valor_produto, from tabela1 t1 join tabela2 t2 on (t1.coluna=t2.coluna);

valor |nome | valor_produto |documento

10,00 |Mouse | 5,00 | 123

10,00 |teclado | 5,00 | 123

Helio Cássio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria que apresenta-se apenas um valor de 10 reais

meu banco de dados é postgresql

no caso a estrutura seria as coluna de cada tabela?

att

Helio Cássio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, a estrutura seria as colunas de cada tabela, os tipos delas (varchar, double, etc...)

Bom, você tem que fazer um GROUP BY nesse select.

Pelo que você falou, seria um GROUP BY na coluna t1.valor, mas acredito que o certo seria o group na coluna t1.documento e mostrando a soma dos valores..

Bom, segue as 3 formas, dá uma olhada aí, e em todo caso, retirei a coluna nome, pois não teria sentido mostrá-la, já que os dados estão agrupados.

select t1.valor as valor_documento
,t1.documento
,t2.valor_produto
from tabela1 AS t1 INNER join tabela2 AS t2 on t1.coluna = t2.coluna GROUP BY t1.valor;

select t1.valor as valor_documento
,t1.documento
,t2.valor_produto
from tabela1 AS t1 INNER join tabela2 AS t2 on t1.coluna = t2.coluna GROUP BY t1.documento;

select SUM(t1.valor) as valor_documento
,t1.documento
,SUM(t2.valor_produto)
from tabela1 AS t1 INNER join tabela2 AS t2 on t1.coluna = t2.coluna GROUP BY t1.documento;

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue abaixo comando ultilizado erro no comando e em anexo estruturas das tabelas

select m.valor as valor_documento, m.documento, l.produto,l.valor from movto m INNER JOIN lancto l on (m.mlid=l.mlid) where m.vencto>'2013-07-01' and m.conta_debitar='2.1.1.2' group by m.documento;

ERRO: coluna "m.valor" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação

LINHA 1: select m.valor as valor_documento, m.documento, l.produto,l....

Tabela "public.lancto"

Coluna | Tipo | Modificadores

----------------------+--------------------------------+-----------------------------

data | date | valor padrÒo de date(now())

turno | integer | valor padrÒo de 0

hora | timestamp(0) without time zone | valor padrÒo de now()

seq | integer | valor padrÒo de 0

operacao | text | valor padrÒo de ''::text

produto | bigint |

bico | text | valor padrÒo de ''::text

quantidade | double precision | valor padrÒo de 0

deposito | bigint | nÒo nulo

pessoa | bigint |

documento | text | valor padrÒo de ''::text

tipo_doc | text | valor padrÒo de ''::text

data_doc | date |

tributacao | text | valor padrÒo de ''::text

preco_unit | double precision | valor padrÒo de 0

valor | double precision | valor padrÒo de 0

vendedor | bigint |

abastecimento | integer |

hora_abastec | timestamp(0) without time zone |

usuario | text | valor padrÒo de ''::text

estacao | text | valor padrÒo de ''::text

empresa | bigint |

mlid | bigint |

grid | bigint | nÒo nulo

conta | text |

nr_item | integer |

produto_kit | bigint |

produto_kit_id | bigint |

encerrante | double precision |

valor_desconto | double precision | valor padrÒo de 0

preco_unit_orig | double precision | valor padrÒo de 0

orcamento_produto | bigint |

ponto | double precision |

cupom_produto | bigint |

medicao_sugerida | double precision |

comanda | text |

comanda_produto | bigint |

departamento | bigint |

mesa_produto | bigint |

tipo_desconto | character(1) |

obs | text |

preco_unit_venda | double precision | valor padrÒo de 0

motivo_inventario | bigint |

abastecimento_manual | integer |

preco_unit_base | double precision |

preco_unit_prazo | double precision |

preco_unit_bico | double precision |

dia_fiscal | date |

cst_pis | character(2) |

cst_cofins | character(2) |

natureza_receita | integer |

-ndices:

"lancto_pkey" PRIMARY KEY, btree (grid)

"lancto_bico_hora_abastec_ix" btree (bico, hora_abastec)

"lancto_comanda_produto_ix" btree (comanda_produto)

"lancto_data_op_empresa_ix" btree (data, operacao, empresa)

"lancto_empresa_bico_ix" btree (empresa, bico)

"lancto_empresa_data_produto_ix" btree (empresa, data, produto)

"lancto_empresa_data_turno_bico_ix" btree (empresa, data, turno, bico)

"lancto_empresa_deposito_produto" btree (empresa, deposito, produto, data)

"lancto_mempresa_abastecimento_ix" btree (empresa, abastecimento)

"lancto_mlid_ix" btree (mlid)

"lancto_motivo_inventario_ix" btree (motivo_inventario)

"lancto_produto_op_empresa_ix" btree (produto, operacao, empresa)

Restriþ§es de verificaþÒo:

"lancto_deposito_not_empty" CHECK (deposito IS NOT NULL AND deposito <> 0)

"lancto_empresa_not_empty" CHECK (empresa IS NOT NULL AND empresa <> 0)

"lancto_produto_not_empty" CHECK (produto IS NOT NULL AND produto <> 0)

Gatilhos:

estoque_invalida_tg BEFORE INSERT OR DELETE OR UPDATE ON lancto FOR EACH ROW EXECUTE PROCEDURE lancto_estoque_invalida_tg

on_lancto_mng_estoque_del AFTER DELETE ON lancto FOR EACH ROW EXECUTE PROCEDURE lancto_mng_estoque_del()

on_lancto_mng_estoque_ins AFTER INSERT ON lancto FOR EACH ROW EXECUTE PROCEDURE lancto_mng_estoque_ins()

on_lancto_mng_estoque_upd AFTER UPDATE ON lancto FOR EACH ROW EXECUTE PROCEDURE lancto_mng_estoque_upd()

pgd_delete BEFORE DELETE ON lancto FOR EACH ROW EXECUTE PROCEDURE pgd_delete_lancto()

pgd_insert BEFORE INSERT ON lancto FOR EACH ROW EXECUTE PROCEDURE pgd_insert_lancto()

pgd_update BEFORE UPDATE ON lancto FOR EACH ROW EXECUTE PROCEDURE pgd_update_lancto()

segunda tabela

autosystem=# \d movto

Tabela "public.movto"

Coluna | Tipo | Modificadores

----------------+--------------------------------+--------------------------------------

data | date | nÒo nulo valor padrÒo de date(now())

hora | timestamp(0) without time zone | valor padrÒo de now()

turno | smallint | valor padrÒo de 0

seq | smallint | valor padrÒo de 0

motivo | bigint | nÒo nulo

conta_debitar | text | nÒo nulo

conta_creditar | text | nÒo nulo

pessoa | bigint |

pessoa_id | text | valor padrÒo de ''::text

documento | text | valor padrÒo de ''::text

data_doc | date |

tipo_doc | text | valor padrÒo de ''::text

lote | integer |

vencto | date |

valor | double precision | valor padrÒo de 0

parent | bigint | valor padrÒo de 0

child | bigint | valor padrÒo de 0

usuario | text | valor padrÒo de ''::text

estacao | text | valor padrÒo de ''::text

obs | text | valor padrÒo de ''::text

info | text | valor padrÒo de ''::text

empresa | bigint | nÒo nulo

mlid | bigint |

grid | bigint | nÒo nulo

pessoa_simples | bigint |

═ndices:

"movto_pkey" PRIMARY KEY, btree (grid)

"movto_contadeb_empresa_ix" btree (conta_debitar, empresa)

"movto_data_empresa_ix" btree (data, empresa)

"movto_ix1" btree (conta_debitar, data, turno)

"movto_ix2" btree (conta_creditar, data, turno)

"movto_mlid_ix" btree (mlid)

"movto_motivo_ix" btree (motivo, documento)

"movto_parent_ix" btree (parent)

"movto_pessoa_cdeb_child_ix" btree (pessoa, conta_debitar) WHERE child = 0

"movto_pessoa_contadeb_ix" btree (pessoa, conta_debitar)

"movto_pessoa_ix" btree (pessoa)

Gatilhos:

movto_conta_invalida_tg BEFORE INSERT OR DELETE OR UPDATE ON movto FOR EACH ROW EXECUTE PROCEDURE movto_conta_invalida_tgf()

on_movto_delete AFTER DELETE ON movto FOR EACH ROW EXECUTE PROCEDURE movto_delete()

pgd_delete BEFORE DELETE ON movto FOR EACH ROW EXECUTE PROCEDURE pgd_delete_movto()

pgd_insert BEFORE INSERT ON movto FOR EACH ROW EXECUTE PROCEDURE pgd_insert_movto()

pgd_update BEFORE UPDATE ON movto FOR EACH ROW EXECUTE PROCEDURE pgd_update_movto()

nos comandos que você me passou n vou consegui coloca o nome do produto que é o solicitado pelo cliente

ele quer o nome do produto, documento, valor_movto(quer é o valor do boleto), valor do produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Hélio, é por essas e outras que gosto do mysql ^^

Bom, ocorreu esse erro pois há colunas que você está tentando exibir que não estão no GROUP BY ou não estão em funções de agregação (SUM,COUNT, sei lá mais o que)

ou seja, somente a terceira forma que passei "está certa"

se precisar exibir mais alguma coluna, terá que acrescenta-lá tanto no select, quanto no GROUP BY.

Espero não ter lhe confundido ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Hélio, sql server e postgresql, não permitem esse tipo de coisa, pois você vai retornar apenas um valor de R$ 10,00 certo, mas há 2 produtos com este valor, qual descrição ele deverá retornar?

Você pode responder: Qualquer descrição.

O MySQL faz isso, ele retorna qualquer descrição, mas esses outros 2 SGBD não.

Uma forma de burlar seria isso:

select t1.valor as valor_documento
,min(t1.documento)
,min(t2.nome_produto)
,min(t2.valor_produto)
from tabela1 t1 join tabela2 t2 on (t1.coluna=t2.coluna) GROUP BY t1.valor;

Se isso não der certo, vou ter que instalar aqui pra testar, hehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de saber se tem a possibilidade de ele retorna o seguinte

atualmente é assim

valor |nome | valor_produto |documento

10,00 |Mouse | 5,00 | 123

10,00 |teclado | 5,00 | 123

gostaria assim

valor |nome | valor_produto |documento

10,00 |Mouse | 5,00 | 123

null |teclado | 5,00 | 123

ou

valor |nome | valor_produto |documento

10,00 |Mouse | 5,00 | 123

|teclado | 5,00 | 123

ou

valor |nome | valor_produto |documento

10,00 |Mouse | 5,00 | 123

0 |teclado | 5,00 | 123

não sei se tem como, ja tentei de varias maneiras

Compartilhar este post


Link para o post
Compartilhar em outros sites

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





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×