กระทู้เก่าบอร์ด อ.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 ข้อมูลจะออกมาเบิ้ล
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
2 @R14384
ขอโทษครับอาจารย์ ที่ต้องสมมุติข้อมมูล
ข้อมมูลจริงเป็นตัวเลข เป็นล้าน มาจากหลายๆ ตาราง เห็นแล้วมันตาลาย
Data เป็นตัวเลขทั้งหมดครับสลับที่ได้ Sum ได้
ผมนั่งทำมา 4-5 ชั่วโมงแล้วครับ เหมือนจะง่ายแต่ไม่ได้สักที
คิดว่าอาจจะมีวิธีที่ผมไม่รู้ ล่าสุดลองเอามา Union ผลมันก็ออกมาได้
แต่ก็ติดปัญหาอีก
ข้อมมูลจริงเป็นตัวเลข เป็นล้าน มาจากหลายๆ ตาราง เห็นแล้วมันตาลาย
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 ซึ่งอาจจะไม่ถูกนักกับการใช้งานจริง
เกิดจาก 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 ให้ไม่ได้ เพราะไม่มีกล้อง และไม่สะดวก
เอาเป็นว่าคุณเรียนนอกรอบกับอ.พิชัยในบอร์ดนี้ ด้วยคำถามนี้ ก็แล้วกัน
และขอโทษนะที่ทำ skyp ให้ไม่ได้ เพราะไม่มีกล้อง และไม่สะดวก
เอาเป็นว่าคุณเรียนนอกรอบกับอ.พิชัยในบอร์ดนี้ ด้วยคำถามนี้ ก็แล้วกัน
5 @R14450
ทำได้แล้วลืมแจ้งครับ
ขอบคุณอ.พิชัยครับ
ขอบคุณพี่ TheBeginer คิดอยู่เหมือนกัน ว่าจะไปหา อ.พิชัยพี่บ้านเลย แต่เกรงใจอยู่เหมือนกัน ผมคิดว่าถ้าไปเรียนตัวต่อตัว อย่างผม น่าจะใช้เวลาไม่นาน เข้าใจหลักการ
แล้วมาเรียน ในบอร์ด ต่ออีก เพราะ Data base ต้องใช้ ประสบการณ์ + ความรู้ + ศิลป์เข้าไปนิด ช่วงนี้ ปิดปีบัญชี ปิดปีงบประมาณ กระดิกไปไหนไม่ค่อยได้เลยครับ
ขอบคุณอ.พิชัยครับ
ขอบคุณพี่ TheBeginer คิดอยู่เหมือนกัน ว่าจะไปหา อ.พิชัยพี่บ้านเลย แต่เกรงใจอยู่เหมือนกัน ผมคิดว่าถ้าไปเรียนตัวต่อตัว อย่างผม น่าจะใช้เวลาไม่นาน เข้าใจหลักการ
แล้วมาเรียน ในบอร์ด ต่ออีก เพราะ Data base ต้องใช้ ประสบการณ์ + ความรู้ + ศิลป์เข้าไปนิด ช่วงนี้ ปิดปีบัญชี ปิดปีงบประมาณ กระดิกไปไหนไม่ค่อยได้เลยครับ
Time: 0.3433s
แต่เท่าที่เห็นข้อมูลตรงนี้ ขอถามก่อนว่า
กรณี record: 5, e, ร / 5, , ก / 5, , ค จำเป็นต้องเป็นตามนี้หรือไม่
สามารถเป็น 5, e, ก / 5, , ค / 5, , ร แทนได้หรือมไม่?