ผู้เขียน หัวข้อ: ขอคำแนะนำการใช้ have  (อ่าน 3778 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ d^_^b►►ทิว

  • Sr. Member
  • ****
  • กระทู้: 315
  • หากินกับสายแลน สไปเดอร์แมน แดนอิสาน
  • Respect: 0
    • ดูรายละเอียด
ขอคำแนะนำการใช้ have
« เมื่อ: ธันวาคม 01, 2010, 17:06:37 PM »
0
ขอคำแนะนำการใช้ have ในสคริป sql หน่อยครับ
"ไม่ได้เก่งเกินใคร แค่ทำได้ในสิ่งที่เรียนมา"
ทิวธวัชร  สุขมา  087-2337003
Server :IBM Ram 4 GB HDD 145 GB Mysql 5.1.39 Linux CentOs
Slave : Xeon 3.0 Ram 2 G HDD 120 GB MySQL 5.0.41 Linux CentOs
โรงพยาบาลโพนพิสัย จังหวัดหนองคาย เริ่มระบบ 26 พฤศภาคม 2550

ออฟไลน์ Svl2Nuk3

  • Hero Member
  • *****
  • กระทู้: 793
  • Respect: 0
    • ดูรายละเอียด
Re: ขอคำแนะนำการใช้ have
« ตอบกลับ #1 เมื่อ: ธันวาคม 03, 2010, 16:23:15 PM »
0
ใช่ตัว  having หรือเปล่าครับ

ตัวนี้เราจะใช้ในการกำหนดเงื่อนไขของฟังก์ชัน เช่น sum , avg , count

ปกติเราใส่เงื่อนไข  เราจะใส่ตรง  where  แต่ถ้าเงื่อนไขที่เรากำหนดเป็นฟังก์ชัน  เราต้องใช้ having ครับ 

ดูตัวอย่างจากโค้ดนี้ก็ได้ครับ

select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30"
group by hn
order by cc desc
limit 10

โค้ดนี้เป็นการดึงข้อมูลผู้ป่วยใน  10  อันดับแรกที่  ดิสชาจ ในเดือน พฤษภา บ่อยที่สุด
โดยดึง  hn , จำนวนครั้งที่มา dischage , รวมค่ารักษาของคนนั้น , อายุ


ถ้าเราจะกรองอายุ  ก็ต้องใส่เงื่อนไขใน where  เช่นจะเอาอายุมากกว่่า  10  ปี  โค้ดก็จะเป็นดังนี้
select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30" and age_y > 10
group by hn
order by cc desc
limit 10


แต่ถ้าเราจะกรองค่าใช้จ่ายรวมที่มากกว่า  5000  ต้องใช้  having เนื่องจากฟิลนี้ใช้ฟังก์ชัน  sum
select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30"
group by hn
having ss > 5000
order by cc desc
limit 10


I'm nuke (นุ๊ก)
My Blog  : http://www.codenuke.net
อดีต นวก.คอมฯ รพช.พรหมพิราม => 1 พ.ค. 52 - 30 ก.ย. 54
ปัจจุบัน : Software Engineer บริษัทแห่งหนึ่ง

ออฟไลน์ boomjang400d

  • Newbie
  • *
  • กระทู้: 32
  • Respect: 0
    • ดูรายละเอียด
Re: ขอคำแนะนำการใช้ have
« ตอบกลับ #2 เมื่อ: ธันวาคม 09, 2010, 11:31:44 AM »
0
ใช่ตัว  having หรือเปล่าครับ

ตัวนี้เราจะใช้ในการกำหนดเงื่อนไขของฟังก์ชัน เช่น sum , avg , count

ปกติเราใส่เงื่อนไข  เราจะใส่ตรง  where  แต่ถ้าเงื่อนไขที่เรากำหนดเป็นฟังก์ชัน  เราต้องใช้ having ครับ 

ดูตัวอย่างจากโค้ดนี้ก็ได้ครับ

select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30"
group by hn
order by cc desc
limit 10

โค้ดนี้เป็นการดึงข้อมูลผู้ป่วยใน  10  อันดับแรกที่  ดิสชาจ ในเดือน พฤษภา บ่อยที่สุด
โดยดึง  hn , จำนวนครั้งที่มา dischage , รวมค่ารักษาของคนนั้น , อายุ


ถ้าเราจะกรองอายุ  ก็ต้องใส่เงื่อนไขใน where  เช่นจะเอาอายุมากกว่่า  10  ปี  โค้ดก็จะเป็นดังนี้
select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30" and age_y > 10
group by hn
order by cc desc
limit 10


แต่ถ้าเราจะกรองค่าใช้จ่ายรวมที่มากกว่า  5000  ต้องใช้  having เนื่องจากฟิลนี้ใช้ฟังก์ชัน  sum
select hn,count(*) as cc,sum(income) as ss,age_y from an_stat
where dchdate between "2010-05-01" and "2010-05-30"
group by hn
having ss > 5000
order by cc desc
limit 10




โหวตให้ 1 like ครับ ;D ;D ;D ;D
อาทิตย์  อินมา นวก.คอมพิวเตอร์
adมึน รพ.กงไกรลาศ

Tel. 084-5054786, 088-5452907
Email : boomjang@hotmail.com


Server :  IBM X3500 Xeon4Core 2.2 GHz RAM 2G HDD SCSI 146Gb*3, RIAD5, HosXP 3.52.6.4 MySQL 5.1.35 On CentOS-5.3 64-bit
Client  : WindowsXP Pro SP3  40 station
          : Window7 Pro 5 station
-----------------------------------------------------------
"พกหัวใจ  แล้วเดินทางไปที่สุดขอบฝัน"