Substituir SubQuery por Join

Como posso substituir esta SubQuery por JOIN?

SELECT v._id, v.nome,
             (SELECT IFNULL(SUM(p.valor),0)
             FROM pedidos p
             WHERE p.id_vendedor = v._id
             AND p.data BETWEEN '2015-12-01' AND '2015-12-31')
             AS valor
             FROM vendedor v
             WHERE v.id_supervisor = 1

Tentei assim, mas não deu certo:

 SELECT v._id, v.nome, IFNULL(SUM(p.valor),0)
 FROM
 vendedor v LEFT JOIN pedidos p ON p.id_vendedor = v._id
  WHERE p.data BETWEEN '2015-12-01' AND '2015-12-31'
  AND v.id_supervisor = 1

Boa tarde, não testei mas acho que dará certo, tente assim:

SELECT v._id, v.nome, SUM(IFNULL(p.valor,0)) as valorPedidos FROM pedidos p INNER JOIN vendedor v ON (p.id_vendedor = v._id) WHERE p.data BETWEEN '2015-12-01' AND '2015-12-31' AND v.id_supervisor = 1 GROUP BY v._id, v.nome;

Deu certo cara, vlw
Na minha query faltou GROUP BY.

Qual a melhor maneira de se fazer? SubQuery ou Join?

Não sei te responder com toda a certeza, mas acredito que usando JOIN é a melhor opção. Fazer um select dentro de outro, na minha percepção, parece ser mais pesado. Que bom que deu certo, continue os estudos!

SELECT PR.NOME, COUNT(DISTINCT I.CODINSTIT) NINST, SUM(VALORTOAL) SOMA
FROM PRENDA PR, DOACAO D, PESSOA P, INSTITUICAO I
WHERE PR.CODPRENDA = D.CODPRENDA
AND D.CODPESSOA = P.CODPESSOA
AND D.CODINSTIT = I.CODINSTIT
AND C.CIDADE LIKE ‘COIMBRA’
AND SYSDATE - DATADOACAO > 0
AND DATADOACAO > DATANASCIMEN
AND TO_NUMBER(TO_CHAR(DATANASC,’YYYY’)) - TO_NUMBER(TO_CHAR(SYSDATE,’YYYY’))=18
AND VALORTOTAL * 1.23 > 3000
GROUP BY PR.NOME;

Como posso tornar esta pesquisa mais rápida para a sua execução?