Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vccrespo

INNER JOIN, LEFT JOIN... não servem p/ min

Recommended Posts

Olá pessoal,

 

Possuo uma tabela WISHLIST que armazena apenas os campos NOME da lista de desejos e COMENTÁRIO.

 

Possuo uma tabela de lista de desejos (WISHLIST_ITEMS), que armazena apenas os códigos dos produtos (PRODUTO_ID), e os campos DATA_INSERT, DATA_MODF.

 

Bom, então tenho que pegar o "nome do produto" na tabela PRODUTO, o "nome da categoria" do produto em CATEGORIA, e o "valor do produto" em VALOR_PRODUTO, ou seja, em 3 tabelas diferentes ligadas apenas pelo campo PRODUTO_ID, para exibir a descrição completa para o cliente. Devo pegar também todos os dados da tabela WHISHLIST (NOME E COMENTÁRIO), mas sempre consigo todos os valores, tanto com o INNER quanto com o LEFT.

 

PROBLEMAS: Vamos lá intonci...

 

Com o INNER JOIN, de três registros consegui apenas dois. Reparei que peguei apenas os dois registros que estão em seqüência (WISHLIST_ITEM_ID 2 E WISHLIST_ITEM_ID 3), o outro registro, que foi cadastrado muito posteriormente, ficando com uma ID alta (WISHLIST_ITEM_ID 20), não apareceu por nada.

 

Com o INNER JOIN, de três registros consegui apenas dois. Reparei que peguei apenas os dois registros que estão em seqüência, o outro registro, que foi cadastrado muito posteriormente, ficando com uma ID alta, não apareceu por nada

Achei que se a tabela WISHLIST_ITEMS se organizase pelo WHISHLIST_ID - o normal é pelo WISHLIST_ITEM_ID - organizando todos os produtos pelo ID da lista, o problema seria solucionado, mas não foi o que aconteceu.

 

Com o LEFT JOIN consegui pegar todos os três registros (apareceram 3 linhas). Porém, no último produto, os campos que eu tanto precisava (nome da categoria, valor do produto, nome do produto) apareceram nulo...

 

Esse foi meu comando SQL, apenas troquei o LEFT pelo INNER

SELECT wi. * , w. * , pp.product_price, pc.category_id, cc.category_name, cc.category_publish
FROM `jos_vm_wishlist_items` AS wi
LEFT JOIN `jos_vm_wishlist` AS w ON w.wishlist_id = wi.wishlist_id
LEFT JOIN `jos_vm_product_price` AS pp ON pp.product_id = wi.product_id
LEFT JOIN `jos_vm_product_category_xref` AS pc ON pc.product_id = wi.product_id
LEFT JOIN `jos_vm_category` AS cc ON cc.category_id = pc.category_id
AND cc.category_publish = 'Y'
WHERE w.wishlist_id = Nº DO CÓDIGO DA LISTA QUE ESTOU BUSCANDO EX.: 3

Me desculpem pelo tópico. Já até li algumas coisas sobre INNER E LEFT aqui no fórum, mas não consegui solucionar meu problema sozinho.

Agradeço desde já, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mrs.. aparentemente a query esta correta... se esta retornando valor nulo, provavelmente eh que você tem produtos na tabela wishlist que nao consta na tabela produtct_price..... ai naum tem jeito né!!!!

 

faca um teste... crie chaves primarias e estrangeiras (sem aceitar nulo) nas tabelas envolvidas que vocë vai achar o seu erro.

 

abs,

ska!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.