sql >> Databáze >  >> RDS >> Mysql

jak používat sql join v 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

Výše uvedené vám poskytne všechny uživatele s řádkem v plánu. Uživatelé s počtem 0 se tedy nezobrazí.

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

Tento dotaz vybere křestní jméno a příjmení uživatele a spočítá, kolikrát se toto ID uživatele objeví v tabulce plánu.

Dělá to seskupením podle ID uživatele.

A navíc používá levé připojení na základě ID uživatele a data. Je důležité zde zadat podmínku data, aby byli vybráni všichni uživatelé. Je to proto, že levé spojení bude zahrnovat všechny uživatele, kteří se také neshodovali. Ale pokud to dáte do klauzule where, nebudou vybráni všichni uživatelé. Jinými slovy, nezískáte počet nuly pro 'gerry chandan', pokud vložíte podmínku data do klauzule where. Místo toho by byl vynechán z výsledků.



  1. Jaké jsou náklady na indexování více sloupců db?

  2. Jak vytvořit tabulku založenou na sadě výsledků JDBC

  3. Může INNER JOIN nabídnout lepší výkon než EXISTS

  4. Sdružování připojení pomocí Pgbouncer na PostgreSQL 9.0