Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SQL INNER JOIN

0 views
Skip to first unread message

Carlos

unread,
Aug 24, 2005, 2:55:33 PM8/24/05
to
Tenho uma duvida sobre INNER JOIN, tenho 4 tabelas:

1- produtos
produto_chave
produto_descricao

2- clientes
cliente_chave
cliente_nome

3- fornecedores
fornecedor_chave
fornecedor_nome

4- produtos_saida
produto_saida_chave
produto_saida_produto_chave
produto_saida_cliente_chave
produto_saida_fornecedor_chave
produto_saida_situacao

Preciso fazer uma consulta que retorne todos os produtos da tabela
produtos_saida, mesmo que nela o campo produto_saida_fornecedor_chave seja
vazio , pois só haverá fornecedor quando situacao="CONSERTO".

"SELECT produtos.produto_chave, produtos.produto_descricao,
produtos_saida.situacao, fornecedores.fornecedor_nome, clientes.cliente_nome
FROM produtos INNER JOIN produtos_saida ON produtos.produto_chave =
produtos_saida.produto_chave INNER JOIN fornecedores ON
produtos_saida.fornecedor_chave = fornecedores.fornecedor_chave INNER JOIN
clientes ON produtos_saida.cliente_chave = clientes.cliente_chave"

Há como fazer essa consulta usando INNER JOIN?

Muitíssimo agradecido pela atenção desde então, no aguardo de um parecer
favorável.
Sem mais para o momento.

Antonio Rodrigues dos Santos Filho

unread,
Aug 24, 2005, 4:28:03 PM8/24/05
to
O que vai acontecer é que não associando o fornecedor a um forncedor na
tabela a operação de join não considerará esta linha.

Voce pode partir para duas opções:
uma é usar um left outer join (ou rigth) que trará todos as linhas da tabela
innermesmo que a tabela outer não tenha uma linha correspondente, mas o valor
correspondete a coluna fornecedor será null.

A outra, e que acho melhor e voce deve pensar nisso, é atribuir uma valor ao
fornecedor, mesmo quando o produto não esteja em coserto. Por exemplo,
quando não estiver em conserto o fornecedor será voce mesmo.

pense bem, pois essas coisas geram impacto no futuro. No meu modo de ver eu
iria mais a fundo, alterando a estrutura das tabelas. Não conheço a sua
aplicação, mas não é estranho tem um produto que saiu para consertar sem um
fornecedor do conserto? não era o caso do fornecedor ficar registrado e a
situação ou status ser alterada para finalizado ou entregue? Desta forma
voce não perde o historico de para onde a peça foi...

--
Abraços

Antonio Rodrigues dos Santos Filho
anton...@gmail.com


"Carlos" escreveu:

Ana Paula [MSFT]

unread,
Aug 24, 2005, 7:14:02 PM8/24/05
to
Olá Carlos,

experimente se esta query traz o resultado esperado.

SELECT produtos.produto_chave, produtos.produto_descricao,
produtos_saida.produto_saida_situacao, fornecedores.fornecedor_nome,

clientes.cliente_nome
FROM produtos
INNER JOIN produtos_saida ON produtos.produto_chave =

produtos_saida.produto_saida_produto_chave
LEFT JOIN fornecedores ON produtos_saida.produto_saida_fornecedor_chave =
fornecedores.fornecedor_chave
INNER JOIN clientes ON produtos_saida.produto_saida_cliente_chave =
clientes.cliente_chave

--
Ana Paula
Microsoft
This posting is provided "AS IS" with no warranties, and confers no rights.


"Carlos" escreveu:

0 new messages