select top 100 a.*, b.*, c.*
from produtos a, vendas b, produtosvendas c
where c.idproduto = a.idproduto
and c.idvenda = b.idvenda
mais facil impossivel...
qq coisa mete uma paginacao passando o ultimo id,
where id > 100, 200, 300, etc...
Povo...
Eu sou fraco com consultas SQL complexas. Será que alguém poderia me dizer, pelo menos, quais comandos devo procurar???
Minha situação é a seguinte:
Um controle de vendas "simples"
Tenhos as seguintes tabelas:
PRODUTOS
- Id_Produto
- Nome
VENDAS
-Id_venda
-NotaFiscal
PRODUTOSVENDAS
- Id_Produto (linkado ao Id_Produto da tabela de produtos)
- Id_Venda (linkado ao Id_Venda da tabela de vendas)
- Quantidade
As tabelas, obviamente possuem mais campos. Mas pro que eu preciso, os campos principais são esses.
O funcionamento, creio que não é mistério pra ninguém.
Quando se faz uma VENDA no sistema, inclui-se uma linha na tabela VENDAS e na tabela PRODUTOSVENDA são cadastrados os produtos daquela venda.
Agora vem a parte que estou "agarrado".
Este sistema é usado de forma que o campo NOTAFISCAL, na tabela Vendas, pode ser preenchido com ZERO (0).
Eu preciso, através de uma consulta SQL, pegar os produtos da tabela PRODUTOSVENDA que fazem parte de vendas com o campo NotaFiscal ZERO.
Um exemplo prático:
VENDAS
Id:1 NotaFiscal: 123
Id:2 NotaFiscal: 0
Id:3 NotaFiscal: 0
PRODUTOS
Id_Produto: 1 Nome: Produto A
Id_Produto: 2 Nome: Produto B
PRODUTOSVENDAS
Id_Produto: 1 Id_Venda: 1 Quantidade: 1
Id_Produto: 2 Id_Venda: 2 Quantidade: 2
Id_Produto: 1 Id_Venda: 2 Quantidade: 1
Id_Produto: 1 Id_Venda: 3 Quantidade: 1
Veja que, neste caso, observando a tabela PRODUTOS VENDA, eu consigo saber que:
2 PRODUTO B e 2 PRODUTO A foram vendidos com vendas em número da NOTAFISCAL zero.
Mas como a tabela possui milhões de registros, vai ficar muito lento se eu percorrer as tabelas todas, separando isso.
Imagino que seja possível trazer esse resultado que eu quero com uma única instrução SQL, só que eu não sei como.
Não sei nem o que estudar. Acredito que eu vá precisar de mais do que um simples INNER JOIN.
Alguém aí entendeu o que eu preciso?!?!?! Poderiam me dar uma LUZ???
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
WebSite: www.dotnetbr.com
E-mail do Grupo: dotn...@googlegroups.com
==============================
issoae...
Caso existam vendas com produtos que não existam mais não traze-los na sql será o menor dos problemas... Quase tão grave quanto ter que recuperar uma noa de abril cujo nome do produto tenha sido alterado em julho... Pense nisto!
SELECT P.NOME, V.ID FROM PRODUTO_VENDA PV INNER JOIN PRODUTO P ON P.ID = PV.ID_PRODUTO INNER JOIN VENDA V ON V.ID = PV.ID_VENDA WHERE V.NOTAFISCAL = 0
SELECT COUNT(P.ID) AS Quantidade, P.NOME FROM PRODUTO_VENDA PV INNER JOIN PRODUTO P ON P.ID = PV.ID_PRODUTO INNER JOIN VENDA V ON V.ID = PV.ID_VENDA WHERE V.NOTAFISCAL = 0 GROUP BY P.ID, P.NOME