นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 1571
ความเห็น: 4

MySQL Left join

การใช้ left join

สวัสดีครับมิตรรักแฟนเพลง
          ช่วงหลังๆมานี่รู้สึกห่างหายไปจาก share.psu.ac.th เนื่องจากไปเขียน sysadmin.psu.ac.th แทน เลยกลัวว่าการทำ KM ใน share.psu.ac.th จะเงียบเหง๋า เพราะเท่าๆที่ดูแล้วมีแต่ขาประจำหน้า(ใหม่มีน้อยเหลือเกิน) มาเข้าเรื่องกันบ้างช่วงนี้งานที่ผมทำมีหน้าที่ใหม่ต้องพัฒนาเพิ่มคือ การเขียนโปรแกรมนั่นเอง ซึ่งความรู้ผมก็ไม่ค่อยมี งูๆปลา (เขียนได้ช้ามากกว่าจะได้แต่ละหน้าหมดเวลาเป็นวัน) แต่ส่วนที่พอจะทำได้เร็วคือ ฐานข้อมูลเวลาใช้คำสั่ง query ข้อมูลมักจะพอทำได้ไม่ยากมากมายเลยตั้งใจว่าจะมาเขียน เทคนิคการใช้คำสั่ง sql ในบล็อกนี้เผื่อบางทีอาจจะมีคนที่ต้องการแก้ปัญหาการ query ข้อมูลอยู่....ก็เป็นได้
เริ่มต้นจากคำสั่ง left join กันเลย สมมุติว่าเรามี table 3 table ต้องการจะให้มันแสดงข้อมูลบาง field ข้อมูลในแต่ละ table ออกมาโดยให้ยึด table ซ้ายมือเป็นหลัก ตามหลักของ left join โดยที่ข้อมูลจาก table อื่นๆจะถูกดึงมาต่อ table ทางซ้ายมือ โดยในที่นี้ผมสุมติว่าผมมี table ดังต่อไปนี้


table:profile

-user_id

-user_name

-address

----------------------------------------------
table:qppt

-user_id

-week_id

-month_id

-average_score

---------------------------------------------------
table:leg_exercise

-user_id

-leg_count

-weight

-----------------------------------------------------
โดยทุก table link กัยด้วย user_id คราวนี้ผมต้องการดูข้อมูล user_id,user_name,week_id,month_id,average_score,leg_count,weight โดยเราจะให้ table profile เป็น table ทางซ้ายนะ โดยเริ่มดังต่อไปนี้
select profile.user_id,profile.user_name,qppt.week_id,qppt.month_id,
qppt.average_score,leg_exercise.leg_count,leg_exercise.weight from profile left join (qppt,leg_exercise) on (qppt.user_id=profile.user_id and leg_exercise.user_id=profile.user_id) เท่านี้ก็จะได้ข้อมูลที่เราต้องการครบแล้วครับ

------------------------------------------------------------------------------
และหากต้องการให้มีการจัดเรียงข้อมูลให้ใช้  order by เติมเข้าไปเช่น 
select  profile.user_id,profile.user_name,qppt.week_id,qppt.month_id,
qppt.average_score,leg_exercise.leg_count,leg_exercise.weight from profile left join (qppt,leg_exercise) on (qppt.user_id=profile.user_id and leg_exercise.user_id=profile.user_id) order by profile.user_id asc //เรียงข้อมูลผู้ใช้งานตาม table profile โดยเรียง user_id จากน้อยไปมาก หรือหากต้องการเรียงจากมากไปน้อยให้ใช้ desc แทน asc 

----------------------------------------------------------------------------

และหากผมต้องการจัดกลุ่มข้อมูลตาม week_id และ average_score ด้วยให้ใช้

select  profile.user_id,profile.user_name,qppt.week_id,
qppt.month_id,qppt.average_score,leg_exercise.leg_count,
leg_exercise.weight from profile left join (qppt,leg_exercise) on (qppt.user_id=profile.user_id and leg_exercise.user_id=profile.user_id) group by leg_exercise.week_id order by qppt.average_score desc

 ก็จะได้ข้อมูลตามต้องการครับ


หมวดหมู่บันทึก: พัฒนางานประจำ
สัญญาอนุญาต: ไม่สงวนสิทธิ์ใดๆ Public_domain
สร้าง: 18 เมษายน 2556 08:55 แก้ไข: 18 เมษายน 2556 09:05 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 Our Shangri-La, Ico24 คนธรรมดา, และ 4 คนอื่น.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

รออ่าน นะคะ

อย่าให้แชร์มีแต่หน้าเดิมต้องชวน ชาวศิลปศาสตร์ มาร่วม Share นะคะ

ยินดีต้อนรับการกลับมาเขียนค่ะ

ท้าวฯ คงต้องบุกไปเชิญชวนถึงถ้ำซะแล้วครับ

อิอิอิ

เราเอง

Ico48
ทำท่าว [IP: 180.183.175.251]
18 เมษายน 2556 15:03
#86969

 

อยากให้เจ้าของบันทึก ช่วยไปอ่านหัวข้อนี้หน่อยนะ ===> http://share.psu.ac.th/blog/infinitedreams/28147

อาจจะยาวไปนิด แต่คิดว่าน่าจะเป็นคนที่ใช่ ถ้าอยากรู้ไว ๆ ข้ามไปอ่านความเห็นสุดท้ายเลยก็ได้

 

เป็นคนในข้อ (3) ที่น่าจะสามารถทำให้ข้อ (1) (2) (4) (5) เป็นจริงได้ไม่ยาก

หากมีจิตอาสา อยากทำ CSR ก็ช่วยติดต่อไปยังทีมงาน Share ด้วยนะ

 

 

Ico48
ทำท่าว [IP: 180.183.168.99]
19 เมษายน 2556 00:31
#87016

 

แล้วต่อด้วยบันทึกนี้ ===> http://share.psu.ac.th/blog/infinitedreams/28302

 

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 3.85.245.126
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ