Estou tentando retornar uma lista de clientes e a soma de suas transações na última semana, mas a consulta retorna clientes que não apostaram nada. Estou tentando fazer isso com uma junção à esquerda, mas a consulta só retorna uma linha se um cliente apostou, o que não é como espero que a junção à esquerda funcione. O que posso fazer para que isso funcione do jeito que eu quero?
select i.accountnumber, i.firstname, i.lastname, sum(a.amount)
from accountinformaton i
left join accountactivity a
on i.accountnumber = a.accountnumber
where a.transactiontype = 'Bet'
and a.transactiondate >='2015-07-31'
group by i.accountnumber, i.firstname, i.lastname
a tabela 'accountinformation' tem milhares de linhas, a consulta acima retorna algumas centenas. Eu esperava poder retornar todas as linhas de 'informações da conta' e ter a soma nula nas contas que não apostaram.
Descobri sozinho. Minha cláusula where está dizendo ao sql para mostrar apenas as linhas que são 'Bet' e têm esses critérios de data, então, sem que eu perceba, estou dizendo ao sql para me mostrar as linhas que tiveram apostas.
Aqui está minha consulta alternativa ...
Colocar as condições na cláusula de junção em vez da cláusula where faz com que a junção esquerda se comporte conforme o esperado.