SQL 子查詢 次數統計-[SQL~關聯子查詢] 多個各自count之後還要join成一張表 (在多個表格裡count資料)

SQL 子查詢 次數統計-[SQL~關聯子查詢] 多個各自count之後還要join成一張表 (在多個表格裡count資料)

SQL 子查詢 次數統計-[SQL~關聯子查詢] 多個各自count之後還要join成一張表 (在多個表格裡count資料)

 

資料來源:http://j796160836.pixnet.net/blog/post/29729775-%5Bsql%5D-%E5%A4%9A%E5%80%8B%E5%90%84%E8%87%AAcount%E4%B9%8B%E5%BE%8C%E9%82%84%E8%A6%81join%E6%88%90%E4%B8%80%E5%BC%B5%E8%A1%A8-%28%E5%9C%A8%E5%A4%9A

假設說,我有個資料庫,分別存了A表格 B表格 C表格 ……

都是主鍵(Primary Key)+外鍵(Foreign Key)的格式

這幾張表都有外來鍵只向同一張表格的主鍵

也就是

A表格

A_id(主鍵)  A_name  data ……

B表格

B_id(主鍵)   A_id(外來鍵)   data ……

C表格

C_id(主鍵)   A_id(外來鍵)   data ……

 

如今

 

我想要個別統計一下資料的狀況

 

最後呈現的欄位是這樣
A_id    A_name   B_count  C_count

ANS:

SELECT `A_id`, `A_name`,

(SELECT COUNT(*) FROM `tableB` WHERE  `tableB`.`A_id`=`tableA`.`A_id`) AS `B_count`,  

(SELECT COUNT(*) FROM `tableC` WHERE  `tableC`.`A_id`=`tableA`.`A_id`) AS `C_count`,  

FROM `tableA`;

 

這個架構叫做

關聯子查詢

SQL語句裡面跟外面有產生關聯的

但是光看問題不會馬上想到這個架構

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *