กระทู้เก่าบอร์ด อ.Yeadram
2,790 8
URL.หัวข้อ /
URL
โชว์ เรคคอร์ล่าสุด ใน Query
พอดี ได้สร้าง Query ชื่อ stock card มีข้อมูลดังนี้
รหัสสินค้า วันที่ นำเข้า นำออก คงเหลือ
10000 25/6/2011 1 0 1
10000 27/6/2011 2 1 2
10000 1/7/2011 2 0 4
20000 26/6/2011 5 0 5
30000 26/6/2011 10 1 9
30000 28/6/2011 0 4 5
40000 12/5/2011 6 0 6
อยากให้แสดงข้อมูลล่าสุด ของแต่ละรหัสสินค้า ค่า ผลลัพธ์ คือ
รหัสสินค้า วันที่ นำเข้า นำออก คงเหลือ
10000 1/7/2011 2 0 4
20000 26/6/2011 5 0 5
30000 28/6/2011 0 4 5
40000 12/5/2011 6 0 6
ในตาราง Query ค่ะ ไม่ทราบว่า มีวิธีไหนมั่งค่ะ ที่สามารถทำได้
natpima_o@hotmail.com ช่อยบอกวิธีด้วยนะค่ะ มือใหม่ ขอบคุณค่ะ
รหัสสินค้า วันที่ นำเข้า นำออก คงเหลือ
10000 25/6/2011 1 0 1
10000 27/6/2011 2 1 2
10000 1/7/2011 2 0 4
20000 26/6/2011 5 0 5
30000 26/6/2011 10 1 9
30000 28/6/2011 0 4 5
40000 12/5/2011 6 0 6
อยากให้แสดงข้อมูลล่าสุด ของแต่ละรหัสสินค้า ค่า ผลลัพธ์ คือ
รหัสสินค้า วันที่ นำเข้า นำออก คงเหลือ
10000 1/7/2011 2 0 4
20000 26/6/2011 5 0 5
30000 28/6/2011 0 4 5
40000 12/5/2011 6 0 6
ในตาราง Query ค่ะ ไม่ทราบว่า มีวิธีไหนมั่งค่ะ ที่สามารถทำได้
natpima_o@hotmail.com ช่อยบอกวิธีด้วยนะค่ะ มือใหม่ ขอบคุณค่ะ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R10302
ขอบคุณนะค่ะ
3 @R10304
ต้องสะกดว่า "ขอบคุณนะคะ" ไม่ก็ถ้าอยากใช้ไม้เอก ก็ต้องเขียนว่า "ขอบคุณค่ะ" ครับ ... โอยปวดหัวๆๆๆ ทำไมคำที่คุณผู้หญิงต้องใช้กันอยู่ทุกประโยคถึงสะกดกันผิด ... คะ กับ ค่ะ ใช้มั่วกันไปหมด syntax error
4 @R13704
ไม่เขียนใน SQL View แต่จะระบุใน หน้าต่างของ Query ได้ตรงไหน ได้ไหมค่ะ
5 @R13709
ขอบคุณมากค่ะ เป็นความรู้อย่างสูง
6 @R13724
อ.สันติสุข ครับ
รบกวนอาจารย์ช่วยขยายความหน่อยได้ไหมครับ?
inner join (select T2.รหัสสินค้า, max(T2.วันที่) as MaxDate
from เทเบิล as T2 group by T2.รหัสสินค้า) as T3
หมายความว่า เอาตาราง 1 inner join กับตาราง 2 ให้ออกมาเป็นตาราง 3 หรือครับ?
on (T1.รหัสสินค้า = T3.รหัสสินค้า) and (T1.วันที่ = T3.MaxDate) order by T1.รหัสสินค้า
ให้รหัสสินค้าในตาราง 1 ตรงกับ รหัสสินค้าในตาราง 3 ที่สร้างขึ้นใหม่ และมีเงื่อนไขที่ 2 ให้วันที่ในตาราง 1 ตรงกับ วันที่ล่าสุดในตาราง 3
ผมเข้าใจแบบนี้ ถูกต้องหรือเปล่าครับ?
แล้วโค้ดนี้ เอาไปเขียนไว้ใน row source ใน property form หรือครับ?
ขอบคุณล่วงหน้าครับ อาจารย์
รบกวนอาจารย์ช่วยขยายความหน่อยได้ไหมครับ?
inner join (select T2.รหัสสินค้า, max(T2.วันที่) as MaxDate
from เทเบิล as T2 group by T2.รหัสสินค้า) as T3
หมายความว่า เอาตาราง 1 inner join กับตาราง 2 ให้ออกมาเป็นตาราง 3 หรือครับ?
on (T1.รหัสสินค้า = T3.รหัสสินค้า) and (T1.วันที่ = T3.MaxDate) order by T1.รหัสสินค้า
ให้รหัสสินค้าในตาราง 1 ตรงกับ รหัสสินค้าในตาราง 3 ที่สร้างขึ้นใหม่ และมีเงื่อนไขที่ 2 ให้วันที่ในตาราง 1 ตรงกับ วันที่ล่าสุดในตาราง 3
ผมเข้าใจแบบนี้ ถูกต้องหรือเปล่าครับ?
แล้วโค้ดนี้ เอาไปเขียนไว้ใน row source ใน property form หรือครับ?
ขอบคุณล่วงหน้าครับ อาจารย์
7 @R13726
ตาราง T1 และ T2 มันก็คือตารางเดียวกัน เพียงแต่เมื่อเรามีการใช้ตารางเดียวกันทั้งใน main query [select T1.รหัสสินค้า, T1.วันที่, T1.นำเข้า, T1.นำออก, T1.คงเหลือ from เทเบิล as T1] และใน sub query [select T2.รหัสสินค้า, max(T2.วันที่) as MaxDate from เทเบิล as T2 group by T2.รหัสสินค้า] แล้ว เราต้องกำหนดชื่อเล่น (Alias Name) ให้แก่มันแตกต่างกัน เพื่อเมื่อเราต้องการอ้างอิงถึงเทเบิลใน main query หรือใน sub query เราจะได้บอก Access ให้มันเข้าใจได้ว่าเป็นเทเบิลในส่วนไหนกันแน่
ส่วน T3 ก็เป็น Alias Name ของ sub query เราจะมองมันว่าเป็น temp table ก็ได้เพราะมันเป็นผลลัพธ์ช่วยคราว ไม่มีที่เก็บ T3 อย่างถาวรในดิสก์ พอใช้เสร็จ ระบบก็ลบมันทิ้งไป เหตุที่ต้องตั้งชื่อออกมาอีก เพราะ syntax ของคำสั่งในการทำ inner join คือ select ... from table inner join table นั่นคือมันต้องการชื่อเทเบิลนั่นเอง
สรุปตรงนี้ก็คือ ... เอา[ตาราง 1] inner join [ตารางชั่วคราว 3] ซึ่งเป็นผลลัพธ์การหาค่าอะไรบางอย่างของ[ตาราง 1] ในคิวรี่ย่อยอีกที
------------------------------------
ถาม : on (T1.รหัสสินค้า = T3.รหัสสินค้า) and (T1.วันที่ = T3.MaxDate) order by T1.รหัสสินค้า
ให้รหัสสินค้าในตาราง 1 ตรงกับ รหัสสินค้าในตาราง 3 ที่สร้างขึ้นใหม่ และมีเงื่อนไขที่ 2 ให้วันที่ในตาราง 1 ตรงกับ วันที่ล่าสุดในตาราง 3
ผมเข้าใจแบบนี้ ถูกต้องหรือเปล่าครับ?
ตอบ : ถูกครับ
------------------------------------
ถาม : แล้วโค้ดนี้ เอาไปเขียนไว้ใน row source ใน property form หรือครับ?
ตอบ : ในโจทย์ข้อนี้ ผู้ถามต้องการนำเอา SQL นี้ ไปสร้างเป็นคิวรี่ครับ หรือไม่ก็เอาไปใส่ใน RecordSource property ของฟอร์มก็ได้ครับ
ส่วน T3 ก็เป็น Alias Name ของ sub query เราจะมองมันว่าเป็น temp table ก็ได้เพราะมันเป็นผลลัพธ์ช่วยคราว ไม่มีที่เก็บ T3 อย่างถาวรในดิสก์ พอใช้เสร็จ ระบบก็ลบมันทิ้งไป เหตุที่ต้องตั้งชื่อออกมาอีก เพราะ syntax ของคำสั่งในการทำ inner join คือ select ... from table inner join table นั่นคือมันต้องการชื่อเทเบิลนั่นเอง
สรุปตรงนี้ก็คือ ... เอา[ตาราง 1] inner join [ตารางชั่วคราว 3] ซึ่งเป็นผลลัพธ์การหาค่าอะไรบางอย่างของ[ตาราง 1] ในคิวรี่ย่อยอีกที
------------------------------------
ถาม : on (T1.รหัสสินค้า = T3.รหัสสินค้า) and (T1.วันที่ = T3.MaxDate) order by T1.รหัสสินค้า
ให้รหัสสินค้าในตาราง 1 ตรงกับ รหัสสินค้าในตาราง 3 ที่สร้างขึ้นใหม่ และมีเงื่อนไขที่ 2 ให้วันที่ในตาราง 1 ตรงกับ วันที่ล่าสุดในตาราง 3
ผมเข้าใจแบบนี้ ถูกต้องหรือเปล่าครับ?
ตอบ : ถูกครับ
------------------------------------
ถาม : แล้วโค้ดนี้ เอาไปเขียนไว้ใน row source ใน property form หรือครับ?
ตอบ : ในโจทย์ข้อนี้ ผู้ถามต้องการนำเอา SQL นี้ ไปสร้างเป็นคิวรี่ครับ หรือไม่ก็เอาไปใส่ใน RecordSource property ของฟอร์มก็ได้ครับ
8 @R20522
ขอรบกวนสอบถามผู้รรู้หน่อยครับ
ผมมีตารางการบันทึกข้อมูลเปลี่ยนอะไหล่รถยนต์ดังนี้ครับ
ผมมีตารางการบันทึกข้อมูลเปลี่ยนอะไหล่รถยนต์ดังนี้ครับ
Time: 0.3387s
from เทเบิล as T1
inner join (select T2.รหัสสินค้า, max(T2.วันที่) as MaxDate
from เทเบิล as T2 group by T2.รหัสสินค้า) as T3
on (T1.รหัสสินค้า = T3.รหัสสินค้า) and (T1.วันที่ = T3.MaxDate) order by T1.รหัสสินค้า