คิวรี่แบบมีเงื่อนไขมากกว่า 1 และเราระบุค่าเอง
กระทู้เก่าบอร์ด อ.Yeadram

 1,969   3
URL.หัวข้อ / URL
คิวรี่แบบมีเงื่อนไขมากกว่า 1 และเราระบุค่าเอง

เรียนผู้รู้ทุกท่านครับ มีข้อมูลดังนี้
fname     period     cause     day     order_day     date
a     01     ขาด     อา.     7     1/5/2008
a     02     ขาด     อา.     7     1/5/2008
a     03     ขาด     อา.     7     1/5/2008
a     04     ขาด     อา.     7     1/5/2008
a     05     ขาด     อา.     7     1/5/2008
a     06     ขาด     อา.     7     1/5/2008
a     07     ขาด     อา.     7     1/5/2008
a     01     ลากิจ     อา.     7     1/5/2008
a     02     ลากิจ     อา.     7     1/5/2008
a     03     ลากิจ     อา.     7     1/5/2008
a     04     ลากิจ     อา.     7     1/5/2008
a     05     ลากิจ     อา.     7     1/5/2008
a     06     ลากิจ     อา.     7     1/5/2008
a     07     ลากิจ     อา.     7     1/5/2008
a     08     ลากิจ     อา.     7     1/5/2008
a     01     เข้าร่วมฯ     อา.     7     8/5/2008
a     02     เข้าร่วมฯ        อา.     7     8/5/2008
a     03     เข้าร่วมฯ      อา.     7     8/5/2008
a     01     ฝึกซ้อม     อา.     7     15/5/2008
a     02     ไม่ระบุ     อา.     7     22/5/2008
a     03     อื่นๆ     อา.     7     29/5/2008
a     04     สาย <=10     อา.     7     5/6/2008
แต่อยากทำคิวรี่ให้แสดงข้อมูลตาม   order_day     และ    period
เพื่อจะได้ทราบยอดของนักศึกษาว่าไม่เข้าชั้นเรียนในวันที่เราบรรยายมากี่ครั้งแล้วโดยเราจะระบุเพียง ลำดับที่ของวัน และ คาบที่เรามีการบรรยายเช่นบรรยายลำดับวันที่ 1 คาบ 1(จันทร์ คาบ 1) ลำดับวันที่ 2 คาบ 3(อังคารคาบ3) และบรรยายอีกวันคือศุกร์ คาบ 5ทำนองนนี้นะครับ แล้วให้แสดง
ชื่อนักศึกษา วัน คาบ วันที่บรรยาย สาเหตุของการขาด เป็นต้น ขอบคุณครับ


3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00536
- ชื่อฟิลด์ ไม่ควรใช้คำสงวนมาตั้งชื่อครับ, day, date เป็นคำสงวน
- เมื่อมีการเก็บวันที่ไว้แล้ว ไม่จำเป็นต้องเก็บ ชื่อวัน, ลำดับวัน ก็ได้ครับ มันซ้ำซ้อน
- - เราจะรู้ ลำดับวันได้จากฟังก์ชั่น weekday(ฟิลด์วันที่)
- - เราจะรู้ชื่อวันได้ได้จาก ฟังก์ชั่น weekdayname(ฟิลด์วันที่)
ดังนั้น จากข้อมูลตัวอย่างนี้ เราย่น ให้เหลือเท่าที่จำเป็นมีแค่ 4 ฟิลด์ครับ
fname, period, cause, absDate (ขอเปลี่ยนชื่อฟิลด์ date เป็น absDate)

SELECT fname, period, cause, weekdayname(day(absDate)) as dyName, absDate FROM ชื่อตาราง
WHERE day(absDate) = clng[ลำดับวันในสัปดาห์]), clng(period) = clng([คาบที่]);


2 @R00540
ขอบคุณครับ มันฟ้องแถวๆ นี้
absDate) = clng[ลำดับวันในสัปดาห์]), clng(period) = clngก็เลยลองเปลี่ยนจาก , มาเป็น ANDมันยอมให้รันคิวรี่ครับ
3 @R00541
ครับ อ้อ ใช่ ผมเขียนสดหน้าเว็บ มันไม่มีระบบแจ้งเตือนว่าเขียนผิด
ขออภัยครับ ตัวแยกเงื่อนไขของ where ต้องเป็น And หรือ Or เท่านั้น
ที่ผมเขียนให้ไป ใช้ คอมม่า เหอๆ ผมนี่มั่วดีจังแต่ดูๆ ไปมาน่าจะมีอีกจุดที่ผิด

ฟังก์ชั่น day() ใช้หาวันที่ -ไม่เอาเดือนไม่เอาปี
ฟังก์ชั่น weekday() ใช้หาลำดับวันในสัปดาห์ 1-7
ฟังก์ชั่น weekdayname() ใช้แปลงค่า 1-7 นั้นเป็นชื่อวัน
เพราะฉะนั้น อากิวร์เมนต์ ที่ส่งเข้าฟังก์ชั่น weekdayname() ต้องอยู่ภายใน 1-7 เท่านั้น แต่ที่ผมให้ไป มันมีโอกาสเป็นได้ 1-31 จึงผิด ขอเปลี่ยนครับ

มันน่าจะเป็น
SELECT fname, period, cause, WeekdayName(Weekday(absDate, vbSunday), True, vbSunday) as dyName, absDate FROM ชื่อตาราง
WHERE weekday(absDate,vbSunday) = clng[ลำดับวันในสัปดาห์]) AND clng(period) = clng([คาบที่]);

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2048s