sql >> Database >  >> RDS >> Mysql

hoe gebruik je sql join in 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

Met het bovenstaande krijg je alle gebruikers met een rij in het schema. Dus de gebruikers met een telling van 0 komen niet opdagen.

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

Deze zoekopdracht selecteert de voornaam en achternaam van de gebruiker en telt het aantal keren dat de gebruikers-ID in de planningstabel wordt weergegeven.

Het doet dit door te groeperen op gebruikers-ID.

En bovendien gebruikt het een left join op basis van gebruikers-ID en datum. Het is belangrijk om hier de datumvoorwaarde in te voeren, zodat alle gebruikers zijn geselecteerd. Dit komt omdat de linker join ook alle gebruikers zal bevatten die niet overeenkomen. Maar als u dit op de waar-clausule plaatst, worden niet alle gebruikers geselecteerd. Met andere woorden, u krijgt geen nultelling voor 'gerry chandan' als u de datumvoorwaarde in de waar-clausule plaatst. In plaats daarvan zou hij de resultaten niet zien.



  1. sorteren op hoog-lage prijs met mysql-gegevens

  2. PL/SQL-pakketten maken in Oracle Database?

  3. Achterliggende witruimte in MySQL verwijderen

  4. Hoe CONCAT() werkt in MariaDB