Mysql
 sql >> Datenbank >  >> RDS >> Mysql

wie man sql join in mysql verwendet

    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

Oben erhalten Sie alle Benutzer mit einer Zeile im Zeitplan. Daher werden die Benutzer mit einer Anzahl von 0 nicht angezeigt.

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

Diese Abfrage wählt den Vor- und Nachnamen des Benutzers aus und zählt, wie oft diese Benutzer-ID in der Zeitplantabelle erscheint.

Dies geschieht durch Gruppierung nach der Benutzer-ID.

Und zusätzlich verwendet es eine linke Verknüpfung basierend auf Benutzer-ID und Datum. Es ist wichtig, hier die Datumsbedingung zu setzen, damit alle Benutzer ausgewählt werden. Dies liegt daran, dass der linke Join auch alle Benutzer enthält, die nicht übereinstimmen. Wenn Sie dies jedoch in die where-Klausel einfügen, werden nicht alle Benutzer ausgewählt. Mit anderen Worten, Sie erhalten für „gerry chandan“ keine Zählung von Null, wenn Sie die Datumsbedingung in die where-Klausel einfügen. Stattdessen würde er von den Ergebnissen ausgeschlossen werden.