Jump to content
tigu17

join novamente

Recommended Posts

tigu17

Boa tarde, eu estou com uma duvida.

A duvida é a seguinte:

Eu tenho uma tabela produtos e uma promocao, e eu quero juntar elas. O problema é que com esta query retorna sempre a mesma designação do produto que está em promocao e retorna o mesmo

$sql = mysql_query("select CC.codProduto AS CodProdutoPromocao, CC.designacao, CC.preco, CP.desconto, CP.CodProduto  from produto CC
							LEFT JOIN promocao CP ON CC.codProduto = CP.codProduto");

Obrigado

Share this post


Link to post
Share on other sites
brunoais

O que é que ela retorna e o que é que ela devia retornar?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
tigu17

Ele retorna sempre os mesmos valores (designação, preço, promoção) de um produto da tabela promoções excepto o código do produto.

Share this post


Link to post
Share on other sites
brunoais

Vê se o q queres é aonde está:

LEFT JOIN

é

RIGHT OUTER JOIN


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
brunoais

Então n percebi o que é que é suposto retornar. O que é que é suposto retornar?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
tigu17

retornar a designação, preco no caso dos produtos sem promoção e retornar designação, preço e desconto no caso dos produtos com promoção

Share this post


Link to post
Share on other sites
brunoais

A tabela produto são todos os produtos, certo?

E a tabela promoção é todos os produtos que estão em promoção, certo?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
brunoais

Como é que tu estás a ir buscar os valores (usando o php)?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
tigu17

Os produtos estão guardados num array na sessão

foreach($_SESSION['lista'] as $codProduto => $quantidade){
        $sql = mysql_query("select CC.codProduto AS CodProdutoPromocao, CC.designacao, CC.preco, CP.desconto, CP.CodProduto  from produto CC
RIGHT OUTER JOIN promocao CP ON CC.codProduto = CP.codProduto");
         $dados    = mysql_fetch_assoc($sql);
 $nome  = $dados['designacao'];
         $preco = $dados['preco'];
 $desconto = $dados['desconto'];
$precodesconto = ($preco * $desconto) / 100;
$novopreco = $preco - $precodesconto;
number_format($novopreco, 2, ",", ".");
$sub = $quantidade * $novopreco;
$total= $total + $sub; 
                                  
                               
       echo '<tr>       
        <td>'.$nome.'</td>
<td>'.$quantidade.'</td>
        <td><a href="?botao=adicionar&numEncomenda=1&quantidade=1&codProduto='.$codProduto.'"> +1</a></td>
        <td>'.$preco.' €</td>
<td>'.$precodesconto.'€ </td> 
        <td>'.$sub.' €</td>
        <td><a href="?botao=eliminar&codProduto='.$codProduto.'"> Remover</a></td>
</tr>';
        }

Share this post


Link to post
Share on other sites
brunoais

Com esse código só vais buscar o 1º dado do resultado de select.

Para obteres tudo vais ter que iterar nos resultados.

foreach($_SESSION['lista'] as $codProduto => $quantidade){
        $sql = mysql_query("select CC.codProduto AS CodProdutoPromocao, CC.designacao, CC.preco, CP.desconto, CP.CodProduto  from produto CC
        LEFT OUTER JOIN promocao CP ON CC.codProduto = CP.codProduto");
         //$dados    = mysql_fetch_assoc($sql); Não é assim
         while(($dados    = mysql_fetch_assoc($sql)) !== FALSE){
         $nome  = $dados['designacao'];
         $preco = $dados['preco'];
         $desconto = $dados['desconto'];
        $precodesconto = ($preco * $desconto) / 100;
        $novopreco = $preco - $precodesconto;
        number_format($novopreco, 2, ",", ".");
        $sub = $quantidade * $novopreco;
        $total= $total + $sub;
                                 
                               
       echo '<tr>       
        <td>'.$nome.'</td>
        <td>'.$quantidade.'</td>
        <td><a href="?botao=adicionar&numEncomenda=1&quantidade=1&codProduto='.$codProduto.'"> +1</a></td>
        <td>'.$preco.' €</td>
        <td>'.$precodesconto.'€ </td>
        <td>'.$sub.' €</td>
        <td><a href="?botao=eliminar&codProduto='.$codProduto.'"> Remover</a></td>
        </tr>';
        }}

Vê se é isso que querias.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
tigu17

Ainda não! Agora aparece todos os produtos da tabela produtos e assume o mesmo código

:)

Share this post


Link to post
Share on other sites
brunoais

Com esse código ele mostra todos os produtos da tabela produtos.

A variável $dados['desconto'] fica com o valor do desconto se ele existe, senão fica com NULL.

Vais ter que fazer o teste de NULL do $dados['desconto'] para aplicar os dos casos que queres que dê no output.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

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.