SQL - Inner Join

Inner Join

  • 當 inner join 2個不同的 table 的時候, 所要達到的最低標準是在 where/on/using clauses
  • 通常是 one-to-many relationship
  • 以這一個 SQL 來看, 可以知道一個 address(房子) 可以住很多人, 但是一個人通常只有一間的房子
  • Return rows 的個數是由 person table 所有的 rows 總數所決定的

 select *

 from person p

 join address a

 using (address_id);
  • 想要知道誰住在同一間房子, 就必須要到 person 的 table 找 first name 跟 last name, 到 address table 找 street 跟 city
 select first_name, last_name, street, city
 from person p
 join address a
 using (address_id);
  • 覺得有相同的 data 太多餘(通常是在 1 對多的多的那一方), 所以可以用 group by street, city 表示這群人裡面有多少個 unique 的 address
 select first_name, last_name, street, city
 from person p
 join address a
 using (address_id)
 group by street, city;
  • 想知道這一家人裡面有幾個人, 就可以用 count() 這一個 function 計算
 select first_name, last_name, street, city, count(p.person_id) as 'Num of People'
 from person p
 join address a
 using (address_id)
 group by street, city;

留言