4
I have this SELECT
that picks up the 6 best selling products:
SELECT IdProduto, SUM(QtdProdutoPedido) as QtdProdutoPedido FROM tb_pedidoproduto
GROUP BY IdProduto ORDER BY QtdProdutoPedido DESC LIMIT 6
Wanted a SELECT
showing all other registered products except those shown with the SELECT
above.
I tried to use NOT EXIST
:
SELECT * FROM `tb_produto` WHERE NOT EXISTS
(SELECT IdProduto, SUM(QtdProdutoPedido) as QtdProdutoPedido FROM tb_pedidoproduto
GROUP BY IdProduto ORDER BY QtdProdutoPedido DESC LIMIT 6)
&& IdCategoria = 2 ORDER BY IdProduto ASC
But I couldn’t put it together. If you have a way to do it in PHP it can also be.
I tried to use NOT EXISTS but it is bringing the results that does not exist in the table tb_pedidoproduto, 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 from those of the second, I tried to make a SELECT using the operand "-" but it did not function either. Somebody help me plss . . .
SELECT * FROM tb_produto WHERE IdProduto NOT in (SELECT IdProduto, SUM(QtdProdutoPedido) as QtdProdutoPedido FROM tb_pedidoproduto GROUP BY IdProduto ORDER BY QtdProdutoPedido DESC LIMIT 6) && IdCategoria = 2 ORDER BY IdProduto ASC
– R.Santos
" #1235 - This version of Mysql does not yet support 'LIMIT & IN/ALL/ANY/SOME subquery' " , gave zinaba man :^/
– JeffNog
https://stackoverflow.com/questions/1519272/mysql-not-in-query
– R.Santos