query ให้ข้อมูลไม่ซ้ำ
กระทู้เก่าบอร์ด อ.Yeadram

 3,727   5
URL.หัวข้อ / URL
query ให้ข้อมูลไม่ซ้ำ

table1                          table2
id        data1               id        data
1           a                     1            ก
2           b                     3            ข
3           c                     3            ค
4           d                     5            ร
5           e                     5            ก
6           f                      5            ค
7           g                     7            ด
8           h                     7            ง
9           i
10        j

เขียนคิวรียังงัยให้ออกมาแบบนี้

query1
id        data1       data
1           a              ก
2           b              
3           c              ข
                             ค
4           d              
5           e              ร
                             ก
                             ค
6           f              
7           g              ด
                             ง
8           h              
9           i
10        j

ตอนนี้มันออกแบบนี้

query1
id        data1       data
1           a              ก
2           b              
3           c              ข
             c              ค
4           d              
5           e              ร
             e              ก
             e              ค
6           f              
7           g              ด
             g               ง
8           h              
9           i
10        j

ทำให้เวลา Sum data1 ข้อมูลจะออกมาเบิ้ล

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

1 @R14383
ถ้าคุณ Un ให้ข้อมูลละเอียด หรือ สมจริงมากกว่านี้ผมคิดว่าน่าจะให้คำตอบที่่ไม่ยากได้
แต่เท่าที่เห็นข้อมูลตรงนี้ ขอถามก่อนว่า
กรณี record: 5, e, ร / 5, , ก / 5, , ค จำเป็นต้องเป็นตามนี้หรือไม่
สามารถเป็น 5, e, ก / 5, , ค / 5, , ร แทนได้หรือมไม่?
2 @R14384
ขอโทษครับอาจารย์ ที่ต้องสมมุติข้อมมูล
ข้อมมูลจริงเป็นตัวเลข เป็นล้าน มาจากหลายๆ ตาราง เห็นแล้วมันตาลาย
Data เป็นตัวเลขทั้งหมดครับสลับที่ได้ Sum ได้
ผมนั่งทำมา 4-5 ชั่วโมงแล้วครับ เหมือนจะง่ายแต่ไม่ได้สักที
คิดว่าอาจจะมีวิธีที่ผมไม่รู้ ล่าสุดลองเอามา Union ผลมันก็ออกมาได้
แต่ก็ติดปัญหาอีก
3 @R14385
ตามนี้ครับ
เกิดจาก Union 3 ชุดครับ

(
Select t1a.ID, t1a.Data1, t2a.MinData as Data
From Table1 As t1a Inner Join
(
SELECT ID, Min(Data) AS MinData
FROM Table2 as t2aSub
Group By t2aSub.ID
) As t2a
On t1a.ID = t2a.ID
)
Union
(
SELECT t1b.ID, t1b.Data1, Null As Data
FROM Table1 As t1b LEFT JOIN Table2 As t2b ON t1b.ID = t2b.ID
WHERE t2b.ID Is Null
)
Union
(
SELECT t2c.ID, Null as Data1, t2c.Data
FROM Table2 As t2c Left Join
(
SELECT ID, Min(Data) as MinData
FROM Table2 As t2cSub
Group By ID
)
As t2cJoin
On t2c.ID = t2cJoin.ID And t2c.Data = t2cJoin.MinData
WHERE t2cJoin.ID Is Null
)

แต่อย่างที่แจ้งไว้ครับว่า ถ้าให้ข้อมูลละเอียดกว่านี้น่าจะง่ายกว่านี้ครับ เพราะที่จริงควรจะต้องใช้ Key เป็นตัวหลักในการ join และ sort ข้อมูลต่างๆ แต่เท่าที่ทำให้ตอนนี้ใช้ Data, Data1 มาเป็นตัวกำหนดการ join ซึ่งอาจจะไม่ถูกนักกับการใช้งานจริง
4 @R14449
เสียดายคุณ Un ไม่ได้ไปเรียนงวดนี้ อาจารย์พิชัยสอนเรื่องนี้พอดีเลย
และขอโทษนะที่ทำ skyp ให้ไม่ได้ เพราะไม่มีกล้อง และไม่สะดวก
เอาเป็นว่าคุณเรียนนอกรอบกับอ.พิชัยในบอร์ดนี้ ด้วยคำถามนี้ ก็แล้วกัน
5 @R14450
ทำได้แล้วลืมแจ้งครับ
ขอบคุณอ.พิชัยครับ
ขอบคุณพี่ TheBeginer คิดอยู่เหมือนกัน ว่าจะไปหา อ.พิชัยพี่บ้านเลย แต่เกรงใจอยู่เหมือนกัน ผมคิดว่าถ้าไปเรียนตัวต่อตัว อย่างผม น่าจะใช้เวลาไม่นาน เข้าใจหลักการ
แล้วมาเรียน ในบอร์ด ต่ออีก เพราะ Data base ต้องใช้ ประสบการณ์ + ความรู้ + ศิลป์เข้าไปนิด ช่วงนี้ ปิดปีบัญชี ปิดปีงบประมาณ กระดิกไปไหนไม่ค่อยได้เลยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3433s