Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > sql : Join กัน 3 ตาราง แล้ว Count ผลออกมา 2 ตาราง ต้องเขียน sql แบบไหนครับ



 

sql : Join กัน 3 ตาราง แล้ว Count ผลออกมา 2 ตาราง ต้องเขียน sql แบบไหนครับ

 



Topic : 130577



โพสกระทู้ ( 190 )
บทความ ( 0 )



สถานะออฟไลน์




ผมมี 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 ด้วย สามารถทำได้ไหมครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2018-03-17 12:08:04
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-03-17 12:06:53 By : the_cop View : 2696 Reply : 4
 

 

No. 1



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
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







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-17 12:18:22 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 190 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-03-17 12:18:22
รายละเอียดของการตอบ ::
+ 1 ครับผม ขอบคุณมากครับ

Code (PHP)
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



จาก Code นี้ หาก ผมจะเอา count_a + as count_b เป็นอีกคอลัมน์ 1 ละครับ
ลองแบบนี้แล้วมัน Error

Code (PHP)
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



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-17 15:02:22 By : the_cop
 

 

No. 3



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ใช้ โค๊ด หลักดีกว่าครับ หรือ

Code (SQL)
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

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-17 15:54:46 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 190 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-03-17 15:54:46
รายละเอียดของการตอบ ::
ขอบพระคุณมากครับผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-17 17:15:18 By : the_cop
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : sql : Join กัน 3 ตาราง แล้ว Count ผลออกมา 2 ตาราง ต้องเขียน sql แบบไหนครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่