Jump to content
tigu17

Join

Recommended Posts

tigu17

Boa noite, tenho uma duvida semelhante ao topico anterior mas não consegui resolver a minha duvida.

Eu tenho uma tabela produto e outra promoção as duas tem como chave primaria o codigo de produto.

Eu faço um left join da tabela produto com promocao, o problema é que esta junção só retorna o codigo de produto dos produtos com promoção os outros ficam sem codigo.

Ja tentei utilizar o case e full outer join mas sempre sem sucesso.

$sql = mysql_query("select CC.codProduto, CC.designacao, CC.preco, CC.imagem, CC.descricao, CC.tipoProduto, CP.codProduto, CP.desconto  from produto CC 
				    LEFT JOIN promocao CP ON CC.codProduto = CP.codProduto WHERE CC.designacao LIKE '%".$palavra."%'");

.

Desde já obrigado

Share this post


Link to post
Share on other sites
Rechousa

O que é que pretendes exactamente?

Se é obter apenas os produtos que têm promoção então precisas do INNER JOIN.

Se queres obter a listagem de todos os produtos e conseguires identificar quais os que têm promoção ou não, então deves usar o LEFT JOIN.

Repara que no teu código estás a obter duas vezes o código do Produto, na 1a e na 7a coluna, só que na 1a coluna recebes sempre (pois estás a consultar a tabela Produto) e na 7a coluna apenas recebes quando esse artigo tem promoção, ou seja, quando os registos da 1a tabela (produto) condizem com os da 2a (promocao).

Podes usar a 7a coluna para sber se ele tem promoção, mas aconselho-te a mudar o nome à coluna, exemplo:

$sql = mysql_query("select CC.codProduto, CC.designacao, CC.preco, CC.imagem, CC.descricao, CC.tipoProduto, CP.codProduto AS CodProdutoPromocao, CP.desconto  from produto CC LEFT JOIN promocao CP ON CC.codProduto = CP.codProduto WHERE CC.designacao LIKE '%".$palavra."%'");

Desta forma, a coluna CodProdutoPromocao vai estar preenchida com o mesmo código da coluna CodProduto quando houver promoção. Quando não houver... Vem a NULL ;)


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
tigu17

Obrigado  ;)

O problema estava nos produtos sem promoção que nao aparecia o codProduto, eu sabia a causa do erro e só nao sabia resolver e apenas bastava utilizar o AS. Obrigado mais uma vez

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.