Question:
I tried to use NOT EXISTS
, but it is bringing the results that do not exist in the tb_pedidoproduto
table, I believe that the LIMIT
is not working:
SELECT produto.idproduto
,produto.nomeproduto
,produto.idcategoria
,produto.imagem
,produto.qtdmedida
,produto.valorproduto
,produto.idunidademedida
,produto.descricaoproduto
FROM tb_produto AS produto
WHERE produto.idcategoria = '2'
AND NOT EXISTS ( SELECT pedidoproduto.idproduto
,SUM(pedidoproduto.qtdprodutopedido) AS qtdprodutopedido
FROM tb_pedidoproduto AS pedidoproduto
WHERE produto.idcategoria = '2'
AND produto.idproduto = pedidoproduto.idproduto
GROUP BY pedidoproduto.idproduto
ORDER BY qtdprodutopedido DESC LIMIT 6)
ORDER BY produto.idproduto ASC
Basically what I need is to subtract the results of the first SELECT
with those of the second, I tried to make a SELECT
using the -
operand, but it didn't work either.
PS: I asked a question already about this, but the answers didn't help, and apparently if I edit the question no one will answer, so I asked another one.
Answer:
I believe your problem is in your sub select. You need to relate your table tb_pedidoproduto
with tb_produto
this within the sub select and only then check if the ids are the same AND ProdutoSub.idproduto = produto.idproduto
in both tables. See how it looks.
SELECT produto.idproduto
,produto.nomeproduto
,produto.idcategoria
,produto.imagem
,produto.qtdmedida
,produto.valorproduto
,produto.idunidademedida
,produto.descricaoproduto
FROM tb_produto AS produto
WHERE produto.idcategoria = '2'
AND NOT EXISTS ( SELECT pedidoproduto.idproduto ,SUM(pedidoproduto.qtdprodutopedido) AS qtdprodutopedido
FROM tb_pedidoproduto AS pedidoproduto
join tb_produto AS ProdutoSub on ProdutoSub.idproduto = pedidoproduto.idproduto
WHERE ProdutoSub.idcategoria = '2'
AND ProdutoSub.idproduto = produto.idproduto
GROUP BY pedidoproduto.idproduto
ORDER BY qtdprodutopedido
DESC LIMIT 6)
ORDER BY produto.idproduto ASC
Make sure your sub select is returning the 6 you don't want.
SELECT pedidoproduto.idproduto ,SUM(pedidoproduto.qtdprodutopedido) AS qtdprodutopedido
FROM tb_pedidoproduto AS pedidoproduto
join tb_produto AS ProdutoSub on ProdutoSub.idproduto = pedidoproduto.idproduto
WHERE ProdutoSub.idcategoria = '2'
--AND ProdutoSub.idproduto = produto.idproduto
GROUP BY pedidoproduto.idproduto
ORDER BY qtdprodutopedido
DESC LIMIT 6