sql >> Database teknologi >  >> RDS >> Mysql

hvordan man bruger sql join i 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

Ovenstående vil få dig alle brugere med en række i tidsplanen det. Så brugere med et antal 0 vil ikke dukke op.

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

Denne forespørgsel vil vælge fornavn og efternavn på brugeren og tælle antallet af gange, som bruger-id vises i tidsplantabellen.

Det gør den ved at gruppere efter bruger-id.

Og derudover bruger den en venstre join baseret på bruger-id og dato. Det er vigtigt at sætte datobetingelsen her, så alle brugere er udvalgt. Dette skyldes, at den venstre joinforbindelse også vil inkludere alle brugere, der ikke matchede. Men hvis du sætter dette på where-klausulen, vil alle brugere ikke blive valgt. Med andre ord vil du ikke få et tal på nul for 'gerry chandan', hvis du sætter datobetingelsen i where-sætningen. I stedet ville han blive udeladt af resultaterne.



  1. SQL-sætning ignorerer parameteren where

  2. Træk noget dato og klokkeslæt fra den aktuelle dato og tid for at finde alder i PHP

  3. SQL 'AND' eller 'OR' kommer først?

  4. Node.js MSSQL tedius ConnectionError:Kunne ikke oprette forbindelse til localhost:1433 - connect ECONNREFUSED