Autonumber ใน Query
กระทู้เก่าบอร์ด อ.Yeadram

 4,665   13
URL.หัวข้อ / URL
Autonumber ใน Query

สมมุติผมมีฟิวด์ ID CADR 10 Record สิ่ิงที่ผมต้องการคือให้มีฟิวด์ AutoNumber มัน Run ตามจำนวน ID Card โดยที่เขียนใน Query คับ
    ฟิวด์                           ฟิวด์
AutoNumber              ID Card
1                                    x
2                                    x
3                                    x
4                                    x
5                                    x
6                                    x
7                                    x
8                                    x
9                                    x
10                                  x

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

1 @R10971
Select
(
Select count(*)
From MyTable as b
Where b.IDCard <= a.IDCard
) as AutoNumber,
IDCard
From MyTable as a
2 @R10972
ผมถือว่าคำตอบนี้ เป็น SQL ระดับเทพเลยนะครับ
ที่ผมตอบได้เพราะเป็นศิษย์มีครูครับ ทุกครัังที่มีใครถาม คำถามนี้ ผมจะนึกถึงอาจารย์ที่สอนวิา Database and SQL สมัย ป.โท เสมอ

ขอบคุณอาจารย์ครับ
อาจารย์ รศ. ดร.ศุภมิตร จิตตะยโศธร
3 @R10975
ขอบพระคุณท่าน PichaiTC และ ขอบคุณอาจารย์ครับ
อาจารย์ รศ. ดร.ศุภมิตร จิตตะยโศธร ด้วยครับ
4 @R10978
เจ๋งครับ เพิ่งรู้วิธีนี้จากกระทู้นี้เช่นกัน
ขอบคุณคุณ PichaiTC ครับ และฝากขอบคุณท่านอาจารย์ของท่านด้วยครับ
5 @R10980
อาจารย์ PichaiTC ช่วยอธิบายความเทพให้เรียนรู้สักนิดนะครับ
ความรู้ผมน้อยเกินกว่าจะมองออกครับ กรุณาด้วยครับ
6 @R10981
เพิ่งรู้ว่าใช้วิธีนี้จากคำสั่ง SQL แบบนี้เป็นครั้งแรก ขอบคุณคุณ PichaiTC และท่านอาจารย์ของคุณด้วยครับ (ใช้ประโยชน์ได้มากมายเลยทีเดียวครับ) ช่วยลดการเขียนโค้ดลงอย่างมาก
7 @R10983
ตอบคุณ Un
ปกติ SQL เป็นภาษา database คือจะทำงานกับข้อมูลที่มีอยู่ใน database เท่านั้น หรือ เอามาคำนวณ บวก ลบ คูณ หาร หรือ หาค่า max min count ประมาณนี้

แต่กรณีนี้ ต้องการหา running number ซึ่ง ถ้าเป็น Structure Programming ทั่วไป ก็สร้างตัวแปร บวกทีละ 1 ไปได้
แต่ SQL แบบนี้ จะทำไม่ได้

ซึ่งในความเป็นจริงแล้ว ถ้าคิดให้ลึกซึ้ง running number (ในกรณีนี้) ก็คือ Sequent Number หรือ เลขเรียงตามลำดับนั่นเอง (มีข้อแม้ว่า ต้องเป็น field ที่ค่าไม่ซ้ำ ไม่อย่างนั้นอาจจะได้ 1, 2, 2, 3, 4, ประมาณนี้)
พอรู้อย่างนี้แล้ว ให้คิดว่าแล้วลำดับนี้จะได้มาอย่างไร ... คิดต่อละกันครับ

ก่อนผมเรียนกับอาจารย์ ท่านนี้ ผมไม่คิดว่าจะทำได้ แต่อาจารย์บอกว่าทำได้ ก็เลยใช้เวลาครุ่นคิดอยู่นาน ครับ แล้วก็ออกมาจนได้ จนสร้างความมั่นใจในการทำ query แบบยากๆ ได้ต่อไป


ข้อมูลเพิ่มเติม -- ที่จริงมี SQL แบบ structure programming ด้วยครับ ขึ้นอยู่กับ ผู้ผลิต หรือ SQL ของ Oracle มี function พิเศษ ให้เลยครับ เพื่อการนี้โดยเฉพาะ

8 @R10984
มีคนคิดให้แล้วมันเลยมองง่าย แล้วยังเขียนออกมาง่ายด้วย
ขอบคุณ PichaiTC มากๆ เลยครับกับความรู้
และขอขอบคุณอาจารย์ รศ. ดร.ศุภมิตร จิตตะยโศธร ด้วยครับ
ที่สอบให้คนมีความรู้ พร้อมด้วยน้ำใจแบ่งปัน
9 @R10986
มีอ้างอิงเพิ่มเติมครับ
ที่จริงเคยมีคน ถาม-ตอบกันมาแล้ว

http://www.thai-access.com/yeadram_view.php?topic_id=187
10 @R16409
สอบถามต่อหน่อยครับ

code ที่อาจารย์ PichaiTC ให้มาต้องเอาใส่ไว้ตรงส่วนไหนของ Query

ใสตรงเงื่อนไขเหลอครับ คือผมเข้าใจว่าเข้าไปเพิ่มฟิวที่ Query แล้ว
ใส่เงื่อนไข (code ที่อาจารย์ PichaiTC) ผมเข้าใจถูกหรือไม่ครับ

คือถ้าจะเอาง่ายๆ คือมันใช้งานอย่างไรครับ


ช่วยอธิบายให้ผมหน่อยครับ
คือเพิ่งหัดจริงๆครับ
ขอบคุณครับ
11 @R16411
เป็น SQL ครับ สร้างด้วย Query หรือ วางใน code กรณีเปิด record set หรือ กำหนด record source
12 @R16417
ขอบคุณครับ ถามต่ออีกนิดครับ

จากเดิมผมเลือก
SELECT Table1.ID, Table1.A, Table1.B, Table1.C, Table1.D, Table1.Text1, Table1.Text2, Table1.Text3, Table1.VV
FROM Table1;

ประมาณนี้
แต่ผมเพิ่มฟิว VV เพื่อเก็บ Autorun

คำถามของผมคือจะเอา Code ตรงนี้ใส่ไว้ตรงไหนจากอันเดิมครับ
คือประมาณอยากเลือกฟิ่วอื่นๆมาด้วยครับ

อันนี้จะได้ 2 ฟิวคือ ID กับ VV ที่เป็น Autorun ครับ อยากจะเอาตัวอื่นที่ A,B,C,D
Text1 พวกนี้มาด้วยผมเขียนอย่างไรครับ

Select
(
Select count(*)
From Table1 as b
Where b.IDCard <= a.ID
) as VV,
ID
From Table1 as a
13 @R16418
ได้แล้วครับ


SELECT (Select count(*)
From Table1 as b
Where b.ID <= a.ID
) AS VV, a.ID, Table1.Text1, Table1.Text1
FROM Table1 AS a, Table1;
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2189s