Jump to content
MP123

Top 5

Recommended Posts

laboss

Em MySQL seria algo do genero,

SELECT COUNT(*) AS Total, Produto.Nome FROM Vendas
LEFT JOIN Produto ON (Produtos.P_ID = Vendas.P_ID) 
GROUP BY Produto.Nome
ORDER BY  Total DESC 
LIMIT 0 , 5

Agora tudo depende das tuas tabelas!

Share this post


Link to post
Share on other sites
MP123

As minhas tabelas sao.. Produtos (codigo, nome, tamanho etc)  e    Encprod (id_encomenda, cod_produto, quantidade_produto )

Eu queria tipo juntar as duas tabelas e onde a quantidade do produto fosse maior que 2 ele mostra-se o nome do produto

Nao esta bem pq da erro mas algu do tipo isto ..

$produtos = mysql_query("SELECT
                    `produtos`.`codigo` AS 'codigo',
                     `produtos`.`nome` AS 'nome',
                     `produtos`.`tamanho` AS 'tamanho',
                     `produtos`.`preco` AS 'preco',
                     `produtos`.`obs` AS 'obs',
                     `prodfam`.`familia` AS 'familia'
FROM `produtos` INNER JOIN `encprod` ON `encprod`.`codigo_produto`=`produtos`.`codigo` WHERE `quantidade_produto`>1 ");
                                while ($produto = mysql_fetch_array($produtos)) {
               $p_codigo = $produto["codigo"];
              $p_nome = $produto["nome"];
              echo "<tr><td>$p_codigo</td><td>$p_nome</td></tr>";
                                }

Share this post


Link to post
Share on other sites
laboss

Da erro onde? E que erro da??

No where da query tens de por a tabela relacionada, caso exista o nome do campo em mais alguma tabela vai dar erro:

SELECT
          produtos.codigo AS codigo,
          produtos.nome AS nome,
          produtos,tamanho AS tamanho,
          produtos.preco AS preco,
          produtos.obs AS obs,
          prodfam.familia AS familia
FROM produtos 
LEFT JOIN encprod ON (encprod.codigo_produto=produtos.codigo)

// FALTA O JOIN da tabela ProdFam ?

WHERE encprod.quantidade_produto > 1 

Share this post


Link to post
Share on other sites
MP123

Da este erro - Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\paporiginal \index.php on line 314

É o codigo qe esta mal acho..

Share this post


Link to post
Share on other sites
laboss

Mete assim

$produtos = mysql_query("SELECT
                                `produtos`.`codigo` AS 'codigo',
                                `produtos`.`nome` AS 'nome',
                                `produtos`.`tamanho` AS 'tamanho',
                                `produtos`.`preco` AS 'preco',
                                `produtos`.`obs` AS 'obs',
                                `prodfam`.`familia` AS 'familia'
                                FROM `produtos` INNER JOIN `encprod`
                                ON `encprod`.`codigo_produto`=`produtos`.`codigo` WHERE `quantidade_produto`>1 ") or die(mysql_error());
                                while ($produto = mysql_fetch_array($produtos)) {
                                    $p_codigo = $produto["codigo"];
                                    $p_nome = $produto["nome"];
                                    echo "<tr><td>$p_codigo</td><td>$p_nome</td></tr>";
                                }

Share this post


Link to post
Share on other sites
MP123

Agora da outro erro - Unknown column 'encprod.codigo_produto' in 'on clause'  :wallbash:

Share this post


Link to post
Share on other sites
laboss

Mete a query assim:

SELECT
          produtos.codigo AS codigo,
          produtos.nome AS nome,
          produtos,tamanho AS tamanho,
          produtos.preco AS preco,
          produtos.obs AS obs,
          prodfam.familia AS familia
FROM produtos 
LEFT JOIN encprod ON (encprod.codigo_produto=produtos.codigo)

// FALTA O JOIN da tabela ProdFam ?

WHERE encprod.quantidade_produto > 1

Falta o join da tabela ProdFam, e verifica se isto LEFT JOIN encprod ON (encprod.codigo_produto=produtos.codigo)

o erro diz que a tabela encprod.codigo_produto não existe na base de dados verifica o nome

Share this post


Link to post
Share on other sites
MP123

Simplifiquei o codigo e tirei os erros e ja confirmei os nomes e ja dá ;)

O codigo é este

Obrigado pela ajuda LaBoss  ;)

$produtos = mysql_query("SELECT *
                                FROM `produtos` INNER JOIN `encprod`
                                ON `encprod`.`cod_produto`=`produtos`.`codigo` WHERE `quantidade_produto`>1 ") or die(mysql_error());
                                while ($produto = mysql_fetch_array($produtos)) {
								$p_nome = $produto["nome"];
                                    echo "<tr><td>$p_nome</td></tr>";
                                }

Share this post


Link to post
Share on other sites
laboss

$produtos = mysql_query("SELECT *
                                                    FROM `produtos` 
                                                   INNER JOIN `encprod` ON (`encprod`.`cod_produto`=`produtos`.`codigo`) WHERE encprod.quantidade_produto >1 ") or die(mysql_error());

$produto = mysql_fetch_array($produtos)
var_dump(mysql_num_rows($produtos));
                                while ($produto ) {
var_dump($produto);
                                                                        $p_nome = $produto["nome"];
                                    echo "<tr><td>$p_nome</td></tr>";
                                }

Mete assim e posta aqui o que aparece na página!

Share this post


Link to post
Share on other sites
MP123

Com esse codigo da erro

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\paporiginal\index.php on line 310

Share this post


Link to post
Share on other sites
laboss

$produtos = mysql_query("SELECT *
                                                    FROM `produtos` 
                                                   INNER JOIN `encprod` ON (`encprod`.`cod_produto`=`produtos`.`codigo`) WHERE encprod.quantidade_produto >1 ") or die(mysql_error());

$produto = mysql_fetch_array($produtos);
var_dump(mysql_num_rows($produtos));
                                while ($produto ) {
var_dump($produto);
                                                                        $p_nome = $produto["nome"];
                                    echo "<tr><td>$p_nome</td></tr>";
                                }

faltou o ; no $produto = mysql_fetch_array($produtos)

Share this post


Link to post
Share on other sites
MP123

Fica mais facil uma imagem pois o que aparece é tipo

- int(6) array(22) { [0]=> string(1) "2" ["codigo"]=> string(1) "2" [1]=> string(5) "adasd" ["nome"]=> string(5) "adasd" [2]=> string(3) "213" ["tamanho"]=> string(3) "213" [3]=> string(24) "imagens/artigos/1234.jpg" ["imagem"]=> string(24) "imagens/artigos/1234.jpg" [4]=> string(2) "13" ["idfam"]=> string(2) "13" [5]=> string(4) "qweq" ["obs"]=> string(4)

http://imageshack.us/f/824/portugalaprogramar.png/

Share this post


Link to post
Share on other sites
laboss

$produtos = mysql_query("SELECT *
                                                    FROM `produtos` 
                                                   INNER JOIN `encprod` ON (`encprod`.`cod_produto`=`produtos`.`codigo`) WHERE encprod.quantidade_produto >1 ") or die(mysql_error());

                                while ($produto = mysql_fetch_array($produtos)) {

                                         $p_nome = $produto["nome"];
                                    echo "<tr><td>{$p_nome}</td></tr>";
                                }

Os dados já estão na variável produtos, o problema agora esta em exibi-los tenta assim, certifica-te que tens este código dentro de uma tabela, se não não vai mostrar nada pk os <tr> ficam inválidos!

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.