กระทู้เก่าบอร์ด อ.Yeadram
1,346 4
URL.หัวข้อ /
URL
QueryRunningSum
ลองอ่านตัวอย่างในบอร์ด หลายอันครับ งง
เลยอาจให้อาจารย์ช่วยลองทำตัวอย่างให้ดูครับ
ผลส่งไฟล์ชื่อ SampleRunningSum ไปที่บอร์ดครับ
ช่วยลองทำให้ดูหน่อยนะครับ
เลยอาจให้อาจารย์ช่วยลองทำตัวอย่างให้ดูครับ
ผลส่งไฟล์ชื่อ SampleRunningSum ไปที่บอร์ดครับ
ช่วยลองทำให้ดูหน่อยนะครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R11707
อาจารย์ครับ ผมเข้าไปอ่านใน กระทู้อื่นที่ งง ก็ตรง q นี่แหละครับ
ไม่ทราบว่า q คืออะไรครับ ใช่ เป็นการสมมุติ table1 ให้ชื่อ q หรือเปล่าครับ
ไม่ทราบว่า q คืออะไรครับ ใช่ เป็นการสมมุติ table1 ให้ชื่อ q หรือเปล่าครับ
3 @R11711
การใช้ sub query หรือ คิวรี่ย่อย หรือ คิวรี่ซ้อนคิวรี่
ผมก็ไม่ค่อยรู้ลึกนัก แต่ก็พอทำได้ ตามความเข้าใจแบบ "ครูพักลักจำ" มาครับ
คิวรี่คือ กลุ่มข้อมูล ครับ หรือ แหล่งข้อมูล ซึ่ง 1 คิวรี่ก็ต้องถือว่า นั่นคือ แหล่งข้อมูล 1 ตัว
ในตัวอย่าง คิวรี่นี้ เราใช้แหล่งข้อมูลที่ 1 คือ ตารางชื่อ table1
แล้วใช้แหล่งข้อมูลที่ 2 คือ q
q เกิดจากไหน ก็เกิดจากคิวรี่เหมือนกันครับ เราสมมติว่าชื่อ q ดูได้จาก select sum(q.unit) from table1 as q
แม้ว่า q จะใช้แหล่งข้อมูลเดียวกันกับคิวรี่ตัวนอกก็ตาม คือ table1 แต่กลุ่มข้อมูลของ q ได้ถูกคัดสรรคัดกรองมาในอีกรูปหนึ่ง หรือในเงื่อนไขที่แตกต่างจากคิวรี่ตัวนอก ดังนั้นจึงถือได้ว่า q เป็นแหล่งข้อมูลที่ไม่เหมือนกับ table1
ในตัวอย่างนี้ ก็คือ เราเอา q กับ table1 มาทำงานร่วมกัน เกือบเหมือนการ join กันนั่นแหละครับ
สรุป q ในที่นี้ คือชื่อสมมติ (alias) ของคิวรี่ย่อย
-เราสามารถตั้งเป็นชื่ออื่นก็ได้ ตราบใดที่ยังไม่ละเมิดกฎการตั้งชื่อ
-หากเรามีคิวรี่ย่อยหลายตัว ใน statement เดียวกัน แต่ละคิวรี่จะตั้งมีชื่อไม่ซ้ำกัน
-ในการเขียน statement แบบซ้อนคิวรี่ (sub query) ทุกๆ การอ้างอิงฟิลด์ ควรหรือจำเป็นอย่างยิ่งที่ต้องระบุชื่อคิวรี่ไปด้วย เช่น แทนที่จะเขียนว่า select datesale เราก็ควรเขียนเป็น select table1.datesale หรือ select q.datesale คือต้องระบุแหล่งที่มาของฟิลด์ด้วยทุกครั้ง
ทำบ่อยๆ ก็คุ้นเคยกับมันไปเองแหละครับ ไม่ยากที่จะเข้าใจนักหรอกครับ
โชคดีครับ
ผมก็ไม่ค่อยรู้ลึกนัก แต่ก็พอทำได้ ตามความเข้าใจแบบ "ครูพักลักจำ" มาครับ
คิวรี่คือ กลุ่มข้อมูล ครับ หรือ แหล่งข้อมูล ซึ่ง 1 คิวรี่ก็ต้องถือว่า นั่นคือ แหล่งข้อมูล 1 ตัว
ในตัวอย่าง คิวรี่นี้ เราใช้แหล่งข้อมูลที่ 1 คือ ตารางชื่อ table1
แล้วใช้แหล่งข้อมูลที่ 2 คือ q
q เกิดจากไหน ก็เกิดจากคิวรี่เหมือนกันครับ เราสมมติว่าชื่อ q ดูได้จาก select sum(q.unit) from table1 as q
แม้ว่า q จะใช้แหล่งข้อมูลเดียวกันกับคิวรี่ตัวนอกก็ตาม คือ table1 แต่กลุ่มข้อมูลของ q ได้ถูกคัดสรรคัดกรองมาในอีกรูปหนึ่ง หรือในเงื่อนไขที่แตกต่างจากคิวรี่ตัวนอก ดังนั้นจึงถือได้ว่า q เป็นแหล่งข้อมูลที่ไม่เหมือนกับ table1
ในตัวอย่างนี้ ก็คือ เราเอา q กับ table1 มาทำงานร่วมกัน เกือบเหมือนการ join กันนั่นแหละครับ
สรุป q ในที่นี้ คือชื่อสมมติ (alias) ของคิวรี่ย่อย
-เราสามารถตั้งเป็นชื่ออื่นก็ได้ ตราบใดที่ยังไม่ละเมิดกฎการตั้งชื่อ
-หากเรามีคิวรี่ย่อยหลายตัว ใน statement เดียวกัน แต่ละคิวรี่จะตั้งมีชื่อไม่ซ้ำกัน
-ในการเขียน statement แบบซ้อนคิวรี่ (sub query) ทุกๆ การอ้างอิงฟิลด์ ควรหรือจำเป็นอย่างยิ่งที่ต้องระบุชื่อคิวรี่ไปด้วย เช่น แทนที่จะเขียนว่า select datesale เราก็ควรเขียนเป็น select table1.datesale หรือ select q.datesale คือต้องระบุแหล่งที่มาของฟิลด์ด้วยทุกครั้ง
ทำบ่อยๆ ก็คุ้นเคยกับมันไปเองแหละครับ ไม่ยากที่จะเข้าใจนักหรอกครับ
โชคดีครับ
4 @R11712
ขอบคุณอาจารย์มากครับ เอาไปประยุก ใช้งานได้แล้วครับ หลังจากที่คิดมาอยู่เดือนนึง
Time: 0.3596s
FROM Table1;