duvida de SQL!  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

Galera...

no join ( na mãozona mesmo)

pegamos para igualar só primary keys, (seria mais trabalhoso pro banco !?)

ou primary keys e foreign keys ??? ( mais trabalho pro desenvolvedor !!!)


valews!



Need money for a f*%#ing beer!
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Em JOINs, você sempre iguala chaves primárias de uma tabela com chaves estrangeiras da outra.
Exemplo:

Pessoa
- idPessoa
- Nome

ContatoPessoa
- idContato
- idPessoa
- Telefone

SELECT p.Nome, cp.Telefone
FROM Pessoa p
INNER JOIN ContatoPessoa cp ON cp.idPessoa = p.idPessoa

Abraços

This message was edited 1 time. Last update was at 18/01/2008 10:51:56


Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

pois é... mas olha só... como o pessoal faz aki..




não posso fazer assim... não posso filtrar loj_loja e ven_venda ao mesmo tempo...

tem q ser uma ou outra! senão o maldito nao aceita!

teria outra solução!?

Need money for a f*%#ing beer!
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Coloque a estrutura das tabelas envolvidas e dê mais detalhes sobre o que você precisa que essa consulta retorne.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

pois é.. os campos são PK...

cliente
----------
loj_loja - PK
cli_cliente - PK

venda
----------
loj_loja - PK
ven_venda - PK

ponte
----------
loj_loja - PK
ven_venda - PK

ponte_d_titulo
-------------------
loj_loja - PK
ven_venda - PK


como to fazendo um relatorio no iReport.. e são muitos registros....
ta demorando demais...
daí me falaram pra filtrar primary keys... q sairia + rapido

estou em dúvida em proceder....

aki ele nao roda, quando filtro loj_loja e ven_venda juntos...


só separadamente...


Need money for a f*%#ing beer!
alexeyh
Smalltalk

Membro desde: 20/04/2006 12:47:27
Mensagens: 4
Offline

teste
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

!?

teste...

ja testei!!!
não funfa de jeito nenhum...

Need money for a f*%#ing beer!
DaviPiala
Virtual Machine Man
[Avatar]
Membro desde: 17/08/2007 19:17:35
Mensagens: 598
Localização: São Paulo
Offline

Felipe,
Esse seu modelo está estranho!

Pelo que entendi não tem como você implementar um relacionamento entre a venda e o cliente.

Veja se o seu modelo responde essa pergunta, que isso que está faltando na sua base.

This message was edited 1 time. Last update was at 18/01/2008 16:55:08


Si temi more regat
Efamima dove tore
Infata dio re
Infa lati plastire
DaviPiala
Virtual Machine Man
[Avatar]
Membro desde: 17/08/2007 19:17:35
Mensagens: 598
Localização: São Paulo
Offline

Kra posta pra mim qual o resultado que você quer.

Exemplo:

Totalizar vendas por loja
Todas as vendas de uma loja

Obs: Teu modelo não permite relacionar venda x cliente

Si temi more regat
Efamima dove tore
Infata dio re
Infa lati plastire
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline





tudo sobre um cliente e o q comprou (futuramente vou implantar) através de um numero de venda

no caso --> ven_venda = 13661


meu problema são os filtros.... aaaaafffffi


so quando defino a loja = 154 tb... é q vem um unico registro
tirando ela ainda da pau...

mexer com select é coisa do demo... principalmente com umas tabelas malucas dessas...


Need money for a f*%#ing beer!
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

acho que você está utilizando duas relações que estão sendo excludentes:

SELECT cc.loj_loja,
cc.cli_cliente,
cc.cic_cep,
cc.cli_nome,
cc.cli_cpf_cgc,
cc.cli_endereco,
vv.ven_venda,
vv.ven_data,
vv.ven_valor,
vv.ven_desc
--vv.cli_cliente,
--fpg.loj_loja,
--fpg.ven_venda,
--fpg.fve_codigo,
--pp.pes_codigo,
--pp.pes_cidade,
--pp.pes_uf

FROM greletro.cliente cc
LEFT JOIN venda vv ON cc.loj_loja = vv.loj_loja and cc.cli_cliente = vv.cli_cliente
LEFT JOIN ponte_eletro fpg ON vv.loj_loja = fpg.loj_loja and vv.ven_venda = fpg.ven_venda
LEFT JOIN pessoa pp ON pp.emp_codigo = cc.loj_loja
LEFT JOIN cliente_nome cn ON pp.pes_codigo = cn.pes_codigo <<----- aqui acho que deve ter uma relacao com cc
LEFT JOIN asa_venda fv ON fpg.fve_codigo = fv.fve_codigo

--AND vv.loj_loja = 154
AND vv.ven_venda = 13661

loja e pessoa.

Tente pensar nesse modelo segundo a tabela fato (na estrutura de cubos, normalmente desnormalizada e pode ser uma view em seu sistema ou uma subquery).
Identifique entre as tabelas quais são inner join e quais são outer, você fez tudo como se fosse inner, e talvez não seja.
Por exemplo os clientes que nunca compraram ou que a última compra já está no arquivo morto e as querys nada tem a retornar.

ai, voce pode pensar em usar subquerys e fazer a relação com elas, exemplo:

select ...
from
(select ... from pessoa,cliente) as cc
left join venda vv on cc.alguma_coisa = vv.alguma coisa


deixe o where apenas para os filtros, é mais fácil fazer combinações com OR, que acho que é o que você quer.

que banco você está utilizando?

fw

This message was edited 1 time. Last update was at 18/01/2008 22:17:12


Sun Certified Java Programmer 5.0
[WWW]
DaviPiala
Virtual Machine Man
[Avatar]
Membro desde: 17/08/2007 19:17:35
Mensagens: 598
Localização: São Paulo
Offline

Acho que no seu caso todos os clientes já necessariamente já efetuaram uma compra isso?

Se for essa questão, certamente você só precisaria de uma query simples como essa.

Primeiro,
Selecione todos os clientes:

Segundo,
Selecionando todas as vendas de cada cliente:

Terceiro,
Descobrindo em quais lojas as vendas de cada cliente foram realizadas:

Si temi more regat
Efamima dove tore
Infata dio re
Infa lati plastire
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

sim sim é isso mesmo!

o filtro é o mais dificil do select.... se mão fizer direito, ele multiplica as informações

Obrigado a todos!

Need money for a f*%#ing beer!
truck1n
Java Ninja
[Avatar]
Membro desde: 26/04/2006 11:41:05
Mensagens: 296
Localização: São Paulo
Offline

Qual banco está utilizando?

Get Rich Or Die Trying
[WWW] [MSN]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team