ผมมี 3 ตารางคือ
ตาราง TYPE
• Id
• Name
•
ตาราง A
• id
• name
• type_id
•
ตาราง B
• id
• name
• type_id
โดยที่ ตาราง A กับ B ไม่เกี่ยวข้องกัน แต่ ตาราง TYPE เชื่อมทั้ง 2 ตาราง
ผมอยาก เอาชื่อ NAME ในตาราง Type มา Group แล้ว Count ออกมา สามารถทำได้ไหมครับ
ผลลัพธ์จะประมาณนี้
์NAME , Count(A) , Count(B)
สินค้า A , 50 , 20
สินค้า B , 60 , 40
สินค้า C 20 , 60
สินค้า D , 10 , 30
หากเขียน คนละ Query ก็สามารถทำได้
SELECT ตาราง TYPE .`name`, count(ตาราง A.type_id) as Count(A)
FROM ตาราง TYPE LEFT JOIN ตาราง A
ON ตาราง A.type_id=ตาราง TYPE.id
GROUP BY ตาราง TYPE.`name`'
แต่อยากเอา ตาราง B มา Count ด้วย สามารถทำได้ไหมครับ
select *
, (select count(*) from a where type_id=t.id) as count_a
, (select count(*) from b where type_id=t.id) as count_b
from type as t
## หรือ
select t.id, t.name, a.c, b.c
from type as t
left join (select type_id, count(*) as c from a group by type_id) as a on a.type_id=t.id
left join (select type_id, count(*) as c from b group by type_id) as b on b.type_id=t.id
select *
, (select count(*) from a where type_id=t.id) as count_a
, (select count(*) from b where type_id=t.id) as count_b
, count_a + count_b as count_c
from type as t
select *, (count_a + count_b) as total
from(
select *
, (select count(*) from a where type_id=t.id) as count_a
, (select count(*) from b where type_id=t.id) as count_b
from type as t
) as t2