Fórum Consulta em SQL #262093
15/12/2004
0
Estou com um problema.
Criei um banco de dados onde tenho uma tabela com nome de EMPRESAS, nesta tabela tenho cadastrado revenda e clientes.
Tenho uma outra tabela com nome de PEDIDO onde tenho as vendas dos produto, o probelam é que na tabela pedio tenho em campo com nome de EMPRESAID onde terei os codigos os clientes e REVENDAID onde terei o código das revendas.
O problema é como fazer esta consulta, tentei fazer algo assim:
select empresa.Nome as Cliente, empresa.Nome as Revenda, pabx.nome as PABX, produto.nome as Produto, versao as Versão, tipo_pedido.nome as Tipo, pedido.quantidade, pedido.NumeroSerie, pedido.desconto, pedido.data, pedido.datafim, pedido.preco, pedido.FaixaVenda from (((pedido inner join empresa on pedido.EmpresaID = empresa.EmpresaID and pedido.RevendaID = empresa.EmpresaID) inner join pabx on pedido.pabxID = pabx.numero) inner join produto on pedido.produtoID = produto.produtoId) inner join tipo_pedido on pedido.TipoPedidoID = tipo_pedido.TipoPedidoID;
sei que esta errado porque não exibiu nenhum registro e além disso tem outros problemas de lógica.
espero que tenha explicado direito
alguem poderia me ajudar??
Douglasf
Curtir tópico
+ 0Posts
15/12/2004
Rômulo Barros
:arrow: [b:355a1f9f05]1 - Sua Tabela Empresa possui os campos REVENDA e CLIENTE ou esses últimos são outras tabelas?[/b:355a1f9f05]
:arrow: [b:355a1f9f05]2 - Sua tabela PEDIDO possui apenas como FK o EMPRESAID ou ela também possui o CLIENTEID e o REVENDAID?[/b:355a1f9f05]
[color=red:355a1f9f05][b:355a1f9f05]Poste a estrutura das tabelas envolvidas no SELECT que poderemos ajudá-lo melhor.[/b:355a1f9f05][/color:355a1f9f05] :wink:
Gostei + 0
15/12/2004
Emerson Nascimento
    produto.nome as Produto, versao as Versão, tipo_pedido.nome as Tipo,
    pedido.quantidade, pedido.NumeroSerie, pedido.desconto,
    pedido.data, pedido.datafim, pedido.preco, pedido.FaixaVenda
from pedido
left join tipo_pedido on (tipo_pedido.TipoPedidoID=pedido.TipoPedidoID)
left join empresa cli on (cli.EmpresaId=pedido.EmpresaID)
left join empresa rev on (rev.EmpresaId=pedido.RevendaID)
left join pabx on (pabx.numero=pedido.pabxID)
left join produto on (produto.produtoId=pedido.produtoID)
where ....
Gostei + 0
15/12/2004
Douglasf
A estrutura da tabela pedido é esta:
A questão é a seguinte, dentro ta tabela PEDIDO tenho dois campos EmpresaID e RevendaID onde os dois campos pegam informações da tabela empresa.
Gostei + 0
15/12/2004
Emerson Nascimento
select cli.Nome as Cliente, rev.Nome as Revenda, pabx.nome as PABX,
    produto.nome as Produto, versao as Versão, tipo_pedido.nome as Tipo,
    pedido.quantidade, pedido.NumeroSerie, pedido.desconto,
    pedido.data, pedido.datafim, pedido.preco, pedido.FaixaVenda
from pedido
left join tipo_pedido on (tipo_pedido.TipoPedidoID=pedido.TipoPedidoID)
left join empresa cli on (cli.EmpresaId=pedido.EmpresaID)
left join empresa rev on (rev.EmpresaId=pedido.RevendaID)
left join pabx on (pabx.numero=pedido.pabxID)
left join produto on (produto.produtoId=pedido.produtoID)
where ....
Gostei + 0
15/12/2004
Douglasf
Uso o MySQL.
Gostei + 0
15/12/2004
Douglasf
muito bom.
Não conhecia o left Join. Qual seria a diferença dele para o inner join?
Gostei + 0
15/12/2004
Emerson Nascimento
inner join - traz os registros somente se estiverem em embas tabelas (em função dos campos de relacionamento)
por exemplo:
tab1 ID Nome Cidade UF 1 Teste1 São Paulo SP 3 Teste3 São Paulo SP 4 Teste4 São Paulo SP tab2 Numero ID_Tab1 Valor 000001 1 100,00 000002 2 250,00 000003 2 250,00 000004 3 250,00 000005 3 250,00 000006 5 250,00 000007 5 250,00
utilizando os valores sugeridos acima, teríamos:
[size=18:dce7789a88]com left[/size:dce7789a88]
select *
from tab2
left join tab1 on (tab1.ID=tab2.ID_Tab1)
resultando:
Numero ID_Tab1 Valor ID Nome Cidade UF 000001 1 100,00 1 Teste1 São Paulo SP 000002 2 250,00 NULL NULL NULL NULL 000003 2 250,00 NULL NULL NULL NULL 000004 3 250,00 3 Teste3 São Paulo SP 000005 3 250,00 3 Teste3 São Paulo SP 000006 5 250,00 NULL NULL NULL NULL 000007 5 250,00 NULL NULL NULL NULL
[size=18:dce7789a88]com inner[/size:dce7789a88]
select *
from tab2
inner join tab1 on (tab1.ID=tab2.ID_Tab1)
resultando:
Numero ID_Tab1 Valor ID Nome Cidade UF 000001 1 100,00 1 Teste1 São Paulo SP 000004 3 250,00 3 Teste3 São Paulo SP 000005 3 250,00 3 Teste3 São Paulo SP
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)