前言:
用A表的PK作KEY尋找在B表中有各有幾筆資料並顯示在同個view前陣子學妹建立了一個問答遊戲
讓使用者可以在後台自由新增遊戲與每一個遊戲的題目
問學長我如果想要同時顯示遊戲與此遊戲目前有幾個問題的話
可以有什麼方法呢?
當然可以下兩個SQL, 先使用SELECT再用foreach將兩個結果merge
那這樣有50個遊戲不就會跑1+50次的SQL嗎? 光想就知道效能上的差異
所以我想用JOIN, 一次完成所需要的功能
table結構如下
A表 a_id, a_name
B表 b_id, a_id, b_data
Step1:先做子查詢
SELECT B.a_id, COUNT(B.b_id) count FROM BGROUP BY a_id
Output:
a_id, count
1 , 10
2 , 20
3 , 30
Step2:將子查詢當作一個表來與原來的A表JOIN
SELECT A.a_id, A.a_name, count
FROM table1 A
LEFT JOIN (
SELECT B.a_id, COUNT(B.b_id) count FROM B
WHERE 1 GROUP BY a_id
) C ON A.a_id = C.a_id
這裡學妹會發現只有count是原本不存在的數值
現在我們先產生一個view
再將它與原本的表格join
這樣我們就可以在同個VIEW看到A表與在B表中的COUNT啦
我歡喜地舉起學妹的手歡呼
留言
張貼留言