Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como usar sql join no mysql

    select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count` 
from tbl_user tu 
inner join tbl_schedule ts on ts.mr_id = tu.mr_id and 
      ts.sch_date between '2012-01-01' and '2012-08-01' 
group by tu.mr_id

O acima fará com que todos os usuários tenham uma linha na agenda. Portanto, os usuários com uma contagem de 0 não aparecerão.
select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count` 
from tbl_user tu 
left join tbl_schedule ts on ts.mr_id = tu.mr_id and 
      ts.sch_date between '2012-01-01' and '2012-08-01' 
group by tu.mr_id

Essa consulta selecionará o nome e o sobrenome do usuário e contará o número de vezes que o ID do usuário aparece na tabela de agendamento.

Ele faz isso agrupando pelo id do usuário.

E, além disso, ele usa uma junção à esquerda com base no ID do usuário e na data. É importante colocar a condição de data aqui para que todos os usuários sejam selecionados. Isso ocorre porque a junção à esquerda incluirá todos os usuários que não corresponderam também. Mas se você colocar isso na cláusula where, todos os usuários não serão selecionados. Em outras palavras, você não obterá uma contagem de zero para 'gerry chandan' se colocar a condição de data na cláusula where. Em vez disso, ele seria deixado de fora dos resultados.