CLAUSULA INNER JOIN
Boa noite
bem nao sei como explicar muito bem mais vamos lá
tenhu de criar um select na minha tabela
só que assim tenhu um valor onde ele me informa o numero do pedido
ai tem os produtos do pedido, e cada produto tem uma ficha de itens.
bem preciso pegar todos os produtos da tabela pedido e os itens vao pegar os itens e gerar a sql
só que o problema nao consiste em gerar só a sql
o problema persiste em entender a clausula INNER JOIN.
Alguem sabe explicar a teoria ea vase dessa clausula?
obrigado desde já.
bem nao sei como explicar muito bem mais vamos lá
tenhu de criar um select na minha tabela
só que assim tenhu um valor onde ele me informa o numero do pedido
ai tem os produtos do pedido, e cada produto tem uma ficha de itens.
bem preciso pegar todos os produtos da tabela pedido e os itens vao pegar os itens e gerar a sql
só que o problema nao consiste em gerar só a sql
o problema persiste em entender a clausula INNER JOIN.
Alguem sabe explicar a teoria ea vase dessa clausula?
obrigado desde já.
Cara, pelo que entendi, vc tem três tabelas PEDIDOS, PRODUTOS e ITENS (não sei os nomes), onde 1 pedido tem N produtos e 1 produto tem N itens, certo?
Se sim, então acho que não seria o INNER JOIN que você deveria usar, pois o INNER JOIN deve ser usado quando o número de registros que vc quer de uma tabela seja igual ao da segunda, nesse caso acho que seria melhor pegar os itens separadamente (três SELECTs)...
Talvez eu tenha entendido mal...
Um exemplo onde vc usaria o INNER JOIN seria para pegar o cliente de determinado pedido, exemplo, pegar os dados pedido de numero 10:
Explicando:
SELECT A.NUM_PEDIDO, A.VAL_TOTAL, A.DATA, B.COD_CLIENTE, B.NOME_CLIENTE
Pega os registros, onde A.* é pra a tabela PEDIDO e B.* é para a tabela CLIENTE
FROM PEDIDO A INNER JOIN CLIENTE B ON A.COD_CLIENTE = B.COD_CLIENTE
Aqui você mostra quais tabelas estão relacionadas, e após o ON vc coloca com quais campos estão ligadas, este A e B após PEDIDO e CLIENTE, significa um tipo de apelido para a tabela, assim não precisa por no SELECT:
SELECT PEDIDO.NUM_PEDIDO, PEDIDO.VAL_TOTAL, PEDIDO.DATA, CLIENTE.COD_CLIENTE...
pode abreviar...
WHERE A.NUM_PEDIDO = 10
Pega os registro cujo NUM_PEDIDO da tabela A (PEDIDO) seja igual a 10...
Outra forma de fazer é deixar tudo no WHERE:
é isso, qualquer dúvida poste...flw
Se sim, então acho que não seria o INNER JOIN que você deveria usar, pois o INNER JOIN deve ser usado quando o número de registros que vc quer de uma tabela seja igual ao da segunda, nesse caso acho que seria melhor pegar os itens separadamente (três SELECTs)...
Talvez eu tenha entendido mal...
Um exemplo onde vc usaria o INNER JOIN seria para pegar o cliente de determinado pedido, exemplo, pegar os dados pedido de numero 10:
SELECT A.NUM_PEDIDO, A.VAL_TOTAL, A.DATA, B.COD_CLIENTE, B.NOME_CLIENTE
FROM PEDIDO A INNER JOIN CLIENTE B ON A.COD_CLIENTE = B.COD_CLIENTE
WHERE A.NUM_PEDIDO = 10
Explicando:
SELECT A.NUM_PEDIDO, A.VAL_TOTAL, A.DATA, B.COD_CLIENTE, B.NOME_CLIENTE
Pega os registros, onde A.* é pra a tabela PEDIDO e B.* é para a tabela CLIENTE
FROM PEDIDO A INNER JOIN CLIENTE B ON A.COD_CLIENTE = B.COD_CLIENTE
Aqui você mostra quais tabelas estão relacionadas, e após o ON vc coloca com quais campos estão ligadas, este A e B após PEDIDO e CLIENTE, significa um tipo de apelido para a tabela, assim não precisa por no SELECT:
SELECT PEDIDO.NUM_PEDIDO, PEDIDO.VAL_TOTAL, PEDIDO.DATA, CLIENTE.COD_CLIENTE...
pode abreviar...
WHERE A.NUM_PEDIDO = 10
Pega os registro cujo NUM_PEDIDO da tabela A (PEDIDO) seja igual a 10...
Outra forma de fazer é deixar tudo no WHERE:
SELECT A.NUM_PEDIDO, A.VAL_TOTAL, A.DATA, B.COD_CLIENTE, B.NOME_CLIENTE
FROM PEDIDO A, CLIENTE B
WHERE A.COD_CLIENTE = B.COD_CLIENTE AND
A.NUM_PEDIDO = 10
é isso, qualquer dúvida poste...flw
Desculpe matioli eu tenhu sim ambas as tabelas só que eu quero fazer pra rodar no vrx
nessa sua segunda forma roda no vrx?
grato pela atenção
nessa sua segunda forma roda no vrx?
grato pela atenção
fiz um view pelo firebird assim:
Fiz dojeito que oweber me ensinou e funcionou agora aqui pelo vb eu gero uma sql assim
CREATE VIEW PEDIDOS(
N_PED,
DATA,
ENTREGA,
COD_PROD,
PROD,
QTD_PRODS,
PRECO,
COR,
TAMANHO,
ITEN,
QTD_ITEM,
COM,
ALT,
ESP,
ENCABECAMENTO)
AS
select pedido.n_ped, pedido.data, pedido.entregar, i_ped.cod_prod, i_ped.prod, i_ped.qtd,
i_ped.valor, i_ped.cor, I_ped.tamanho, i_prods.item, i_prods.qtd, i_prods.com,
i_prods.com, i_prods.esp, i_prods.encabecamento
from i_prods inner join (pedido inner join i_ped on i_ped.n_ped=pedido.n_ped) on i_prods.n_prod=i_ped.cod_prod
;
Fiz dojeito que oweber me ensinou e funcionou agora aqui pelo vb eu gero uma sql assim
dim qual_pedido as string
qual_pedido=txtNPed
rs_qpedido.open "select * from Pedidos where n_ped='" & qual_pedido &"'"
Tópico encerrado , respostas não são mais permitidas