กรุณาปิด AdBlock!

Cancel your adBlock please.

ขยายหน้าเว็บRegister Login
 โฆษณา
หน้า: [1]  ลงล่าง
  พิมพ์  
topic

query หาผมรวมของแต่ละ record ในครั้งเดียว ด้วย SUM()  (อ่าน 20729 ครั้ง)

ไอที
« เมื่อ: 25, 07 2008, 08:28:15 PM »
'SELECT SUM(regis_data.TYPE=1) AS t1,
	
SUM(regis_data.TYPE=2) AS t2, 
	
SUM(regis_data.TYPE=3) AS t3,
	
SUM(regis_data.TYPE=4) AS t4  
	
FROM `regis_data`

คำอธิบาย
จากคำถามนี้ครับ

ตาราง type มันเก็บเลข 1-4 เป็นรหัสสาขา เราต้องการผลรวมของแต่ละสาขา เพื่อบอกว่าในสาขาที่ 1 มีคนสมัครแลวกี่คน ซึ่งโดยปกติแล้วจะใช้ WHERE 'course' เพื่อสร้างเงื่อนไข

แต่การทำด้วยวิธีการดังกล่าวนั้น จะต้อง query ข้อมูล 4 ครั้ง นั้นหมายถึง where type = 1, ... where type = 4

มีเทคนิคแบบไหนบ้างที่สามารถทำการ query เพียงครั้งเดียว แล้วได้ผลลัพท์ตามต้องการ คือบอกจำนวนว่า ใน type = 1 มีจำนวนกี่ row

ถ้ารู้ช่วยตอบด้วยครับ ขอบคุณมาก

ผลสรุปได้ว่า
ผมต้องหาว่า ใน table นี้ มีเลข 1 กี่ตัว เลข 2 กี่ตัว 3 กี่ตัว และ 4 กี่ตัว คุณลองใช้ความคิดดูว่า ถ้าเ้ป็นคุณในตอนนี้จะใช้วิธีใดในการเขียนคำสั่ง SQL เพื่อดึงเอา record มาแสดงผล

ในแว๊บแรก ผมเชื่อว่าหลายคนอาจจะใช้แบบนี้ SELECT type FORM table WHERE type=1; ใช่มั้ยครับ แล้วต่อจากนั้น ท่า่นก็เอามา เข้่า mysql_num_rows() ใช่หรือเปล่า จากนั้นจะได้ $num ที่เป็นจำนวนแถวของ type = 1 (พยายามทำความเข้าใจนะครับ)

และถ้าต้องการหา type = 2 ท่านก็ต้องทำแบบเดิมอีก แต่เปลี่ยนเงื่อนไข เป็น WHERE type = 2 ถูกต้องมั้ยครับ

วิธีที่ง่ายและไวกว่า
ผมไปพบเจ้า SUM() เมื่อนานมาแล้ว มันใช้หาผลรวม ทีนี้ผมนึกสังหรณ์ใจว่า เอ๊ะ มันหาผลรวมได้แล้ว มันก็ต้องมีการสร้างเงื่อนไขได้ซิน่า

ในเมื่อมันเป็น function ผมเลยเขียนใส่เข้าไปแบบนี้ครับ SUM(type=2) ผลลัำพท์ืที่ได้ก็คือ SUM(type=2) = 1

แต่ในที่นี้ผมต้องการระบุชือให้กับเจ้า field นี้ใหม่ เป็น T2 ก็ใส่เพิ่มไปว่า SUM(type=2) AS T2

ผมต้องการหา ผลรวมของ type ทั้ง 4 ดังนั้น ผมจึได้เขียนออกมาตามตัวอย่างข้างต้น

ใครมีข้อสงสัยตรงไหนลองสอบถามได้ครับ ลองเอาไปประยุกค์ใ้ช้กันดู

ข้อดีของการเขียน SQL ข้างต้น
1. สั้นและกระชับ
2. ทำงานได้รวดเร็ว
3. ใช้ function ของ SQL ได้คุ้มค่า
4. ฝึกทักษาการเขียน ภาษา SQL
5. ลดการทำงานของ Server เมื่อมีการ query น้อย ก็ย่อมทำงานน้อยลงไปด้วย
6. แก้ไขได้ง่าย อ่านง่ายดูง่าย
เด็กไอทีคลับ
เด็กไอทีตัวพ่อ
เด็กไอทีคลับชั้นเซียน
*
พลังความคิด 89
กระทู้: 3,536
บันทึกการเข้า
ไอที
« ตอบ #1 เมื่อ: 10, 05 2010, 05:59:07 PM »
น่าสนใจ
peanutpai
บุคคลทั่วไป
บันทึกการเข้า
หน้า: [1]  ขึ้นบน
  พิมพ์  
 
กระโดดไป: