INNER JOIN não exibe todos os registros que tem um ID igual
saudações a todos,
Possuo uma tabela de lista de desejos, que armazena os códigos dos produtos (PRODUTO_ID), e que aceita cadastro de produtos repetidos na mesma lista, ou seja, PRODUTO_ID iguais em certas listas de certos usuários.
ex.: LISTA_ID 5 pode ter três registros do mesmo produto (PRODUTO_ID 33)
A partir dessa tabela, com um select, tenho que pegar o nome do produto na tabela PRODUTO, o nome da categoria do produto em CAT_PRODUTO, e o valor do produto em VAL_PRODUTO, ou seja, em 3 tabelas diferentes ligadas apenas pelo PRODUTO_ID.
Com o INNER JOIN consegui fazer isso, porém, observei que quando pesquiso em uma lista de desejo que contem dois ou mais PRODUTO_ID iguais (como no ex. acima), ele exibe apenas uma linha desse produto, ocultando (ou sei lá o que) o(s) outro(s) produto(s) que estão cadastrados na lista.
segue o código que estou utilizando
obs.: O principal motivo desse SELECT é de fornecer novos campos para serem usados de filtro pelo usuário (filtrando por CATEGORIA, VALOR, NOME, DATA_CADASTRO entre outros campos).
Alguma idéia de como melhorar isso??? Obrigado a todos!!
Possuo uma tabela de lista de desejos, que armazena os códigos dos produtos (PRODUTO_ID), e que aceita cadastro de produtos repetidos na mesma lista, ou seja, PRODUTO_ID iguais em certas listas de certos usuários.
ex.: LISTA_ID 5 pode ter três registros do mesmo produto (PRODUTO_ID 33)
A partir dessa tabela, com um select, tenho que pegar o nome do produto na tabela PRODUTO, o nome da categoria do produto em CAT_PRODUTO, e o valor do produto em VAL_PRODUTO, ou seja, em 3 tabelas diferentes ligadas apenas pelo PRODUTO_ID.
Com o INNER JOIN consegui fazer isso, porém, observei que quando pesquiso em uma lista de desejo que contem dois ou mais PRODUTO_ID iguais (como no ex. acima), ele exibe apenas uma linha desse produto, ocultando (ou sei lá o que) o(s) outro(s) produto(s) que estão cadastrados na lista.
segue o código que estou utilizando
SELECT * FROM ´vm_wishlist_items´ AS wi INNER JOIN ´vm_wishlist´ AS w ON w.wishlist_id = wi.wishlist_id INNER JOIN ´vm_product_price´ AS pp ON pp.product_id = wi.product_id INNER JOIN ´vm_product_category_xref´ AS pc ON pc.product_id = wi.product_id INNER JOIN ´vm_category´ AS cc ON cc.category_id = pc.category_id WHERE w.wishlist_id ="NUMERO DE UMA LISTA DE DESEJOS QUALQUER"
obs.: O principal motivo desse SELECT é de fornecer novos campos para serem usados de filtro pelo usuário (filtrando por CATEGORIA, VALOR, NOME, DATA_CADASTRO entre outros campos).
Alguma idéia de como melhorar isso??? Obrigado a todos!!
Vccrespo
Curtidas 0
Respostas
Vccrespo
28/07/2008
saudações a todos,
Possuo uma tabela de lista de desejos, que armazena os códigos dos produtos (PRODUTO_ID), e que aceita cadastro de produtos repetidos na mesma lista, ou seja, PRODUTO_ID iguais em certas listas de certos usuários.
ex.: LISTA_ID 5 pode ter três registros do mesmo produto (PRODUTO_ID 33)
A partir dessa tabela, com um select, tenho que pegar o nome do produto na tabela PRODUTO, o nome da categoria do produto em CAT_PRODUTO, e o valor do produto em VAL_PRODUTO, ou seja, em 3 tabelas diferentes ligadas apenas pelo PRODUTO_ID.
Com o INNER JOIN consegui fazer isso, porém, observei que quando pesquiso em uma lista de desejo que contem dois ou mais PRODUTO_ID iguais (como no ex. acima), ele exibe apenas uma linha desse produto, ocultando (ou sei lá o que) o(s) outro(s) produto(s) que estão cadastrados na lista.
segue o código que estou utilizando
obs.: O principal motivo desse SELECT é de fornecer novos campos para serem usados de filtro pelo usuário (filtrando por CATEGORIA, VALOR, NOME, DATA_CADASTRO entre outros campos).
Alguma idéia de como melhorar isso??? Obrigado a todos!!
SELECT * FROM ´vm_wishlist_items´ AS wi INNER JOIN ´vm_wishlist´ AS w ON w.wishlist_id = wi.wishlist_id INNER JOIN ´vm_product_price´ AS pp ON pp.product_id = wi.product_id INNER JOIN ´vm_product_category_xref´ AS pc ON pc.product_id = wi.product_id INNER JOIN ´vm_category´ AS cc ON cc.category_id = pc.category_id WHERE w.wishlist_id ="NUMERO DE UMA LISTA DE DESEJOS QUALQUER"
O problema continua, porém, minha observação anterior parece estar errada...
observei que ele não está varrendo toda a tabela a procura dos dados (é o que eu acho). Por exemplo: na tabela WISHLIST_ITEMS, tenho vários produtos cadastrados e em comum, com a WISHLIST_ID 5, ou seja, é uma lista de desejos 5. Acontece que eu cadastrei dois produtos, ficando em seqüencia na tabela (ex.: WISHLIST_ITEM_ID 1 E 2). Após vários registros em várias outras listas, cadastrei mais um registro, que ficou com uma ID alta (ex.: WISHLIST_ITEM_ID 20). Quando faço uma pesquisa com o INNER JOIN, pego os dois primeiros produtos, mas o outro produto não consigo listá-lo..
p/ ilustrar o que falei acima...
[1] - Select de toda a tabela WISHLIST
[url][img]http://picasaweb.google.com/vccrespo/LbumSemTTulo/photo#5228534604748993394[/img][/url]
[2] - Select da tabela WISHLIST pesquisando pela lista ID 1
[url][img]http://picasaweb.google.com/vccrespo/LbumSemTTulo/photo5228534605006212386[/img][/url]
[3] - Select de todas as tabelas faladas acima, utilizando o INNER JOIN
[url][img]http://picasaweb.google.com/vccrespo/LbumSemTTulo/photo5228534599163615442[/img][/url]
alguem sabe como fazer isso funcionar?? alguma sugestão???
muito obrigado[/url]
GOSTEI 0