Boa tarde!
Para a consulta "quais produtos foram vendidos ou não em um determinado mês" apenas optei por adicionar a quantidade.
E utilizando a subconsulta funcionou normalmente, ou seja, os produtos que não foram vendidos no mês 10 são listados como NULL já que foi utilizado o RIGHT JOIN com a tabela produtos:
SELECT pr.nome, x.id_pedido, x.id_produto, x.quantidade
FROM (
SELECT i.id_pedido, i.id_produto, i.quantidade
FROM pedidos AS p INNER JOIN itens_pedido AS i
ON p.id = i.id_pedido
WHERE STRFTIME ('%m', p.data_hora_pedido) = '10'
) AS x
RIGHT JOIN produtos AS pr
ON pr.id = x.id_produto
ORDER BY pr.nome;
Tentei replicar a mesma consulta utilizando múltiplos JOINS, e desta forma, os produtos que não foram vendidos no mês 10 não são listados.
SELECT pr.nome, i.id_pedido, i.id_produto, SUM (i.quantidade) AS 'quantidade'
FROM pedidos AS p INNER JOIN itens_pedido AS i
ON p.id = i.id_pedido
RIGHT JOIN produtos AS pr
ON pr.id = i.id_produto
WHERE STRFTIME('%m', p.data_hora_pedido) = '10'
GROUP BY pr.nome
ORDER BY pr.nome;
A lógica aparentemente é a mesma, mas não consegui identificar porque as consultas apresentam resultados diferentes.