ใช้คำสั่ง JOIN แต่จะเอาแค่แถวเดียว

ย้อนกลับไปในวันที่ผมลองใช้คำสั่ง JOIN TABLE ผลออกมามันน่าทึ่งผมค่อนข้างชอบใจเพราะมันง่ายมากๆ แค่บอกอะไรนิดๆหน่อยๆก็ได้ข้อมูลที่ต้องการทันที ทำให้งานผมง่ายขึ้นและเสร็จเร็วขึ้นมาก แต่ในบางสถานการณ์กลับได้ผลไม่ตรงใจนักเพราะเมื่อตารางลูก (Child Table) ที่ผมไป JOIN นั้นมันมีความสัมพันธ์กับตารางพ่อ (Parent Table) ในแบบหนึ่งบรรทัดต่อหลายๆบรรทัด (1-to-Many) ผลที่ได้รับก็คือจะมีผลลัพธ์ที่ตรงเงื่อนไขเกิดขึ้นหลายบรรทัด นั่นก็คือเราจะได้ผลลัพธ์เป็นข้อมูลซ้ำซ้อนนั่นเอง ทีนี้จะเอายังไงกันดี

จากนั้นผมก็พบว่ามีคนหลายคนที่มีปัญหาแบบเดียวกัน และโชคดีว่าโลกนี้มี GROUP BY ซึ่งเป็นคำขยายของคำสั่ง SELECT ครับ โดยคำขยายคำสั่งนี้จะบอกให้ DATABASE SERVER รวบเอาข้อมูลจากการ SELECT ที่มีค่าในคอลัมน์ที่ระบุเหมือนกันเข้าด้วยกัน ดังนั้นจากปัญหาข้างต้นผมแทบไม่ต้องทำอะไรนอกจากเพิ่มคำขยายคำสั่ง SELECT .. FROM .. JOIN ที่ผมใช้ด้วย GROUP BY แล้วบอกมันว่าให้มันรวบข้อมูลเข้าด้วยกันโดยดูจากคอลัมน์ไหนบ้าง แค่นั้นก็จบงานได้ทันที

Question : "I use SQL to JOIN between TABLE , but I just need only one row, How do i do.?"
Answer : "of course, You can  easily pass that problem with GROUP BY."
Answer : "pattern is SELECT .. JOIN .. GROUP BY <column1>,<column2>"

ไว้วันหลังค่อยมาเขียนขยายความครับ แต่ถ้าใครใจร้อน ตามไปอ่านได้จากลิงก์ที่มาของหนทางแก้ปัญหาที่ผมเอามาเป็นไอเดียได้จากลิงก์ข้างล่างนี้ครับ
link 1 : stackoverflow.com - 3313614
link 2 : stackoverflow.com - 15626493

แสดงความคิดเห็น

0 ความคิดเห็น