ข้อมูลของผมโครงสร้างประมาณนี้(เป็น single table นะครับ ไม่ได้ทำ normalization)
โดยหลักๆคือจะมี CLIENT เก็บชื่อลูกค้า PRODUCT เก็บชื่อ product ที่ลูกค้าเจ้านั้นซื้อ
และก็ VALUE1 จนถึง VALUEn เก็บรายละเอียดต่างๆ (ในที่นี้ผมขอยกตัวอย่างมาแค่ 1-3 นะครับ)
โดยที่ ลุกค้า 1 เจ้าสามารถมีได้หลายๆ PRODUCT และในทางเดียวกัน PRODUCT ก็สามารถมีผู้ซื้อได้หลายเจ้าเหมือนกัน (Many to Many)
ทีนี้โจทย์ของผมคือ ผมต้องการ Verify ว่า ลูกค้า 2 เจ้าที่ใช้ Product ตัวนึง เช่น ลุกค้า A กับ ลูกค้า B ที่ใช้ Product AA นั้นมี VALUE ต่างๆเหมือนกันหรือไม่
โดยที่ผลลัพท์ที่ผมต้องการ ผมต้องการแค่เชคว่า เหมือนกัน หรือ ไม่เหมือนกัน (ทั้งจำนวน Row และ value ข้างใน)
ผมลองเขียนว่า
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้SELECT
A.CLIENT,
A.PRODUCT,
A.VALUE1,
A.VALUE2,
A.VALUE3
FROM [table] A
INNER JOIN [table] B
ON A.PRODUCT = B.PRODUCT
WHERE A.PRODUCT = 'AA'
AND A.CLIENT = 'A'
AND B.CLIENT = 'B'
ผลลัพท์ก็ยังไม่ได้ตามที่ต้องการเท่าไหร่ เพราะบางทีลูกค้าต่างเจ้า ก็มีจำนวน Row ต่างกัน วิธีนี้มันทำให้รู้แค่จำนวน Row ที่เหมือนกัน แต่มันไม่สามารถทราบได้ว่ามี Row ที่ต่างหรือจำนวนไม่เท่ากันหรือไม่ (เช่น A มี 3 Row B มี 4 Row เราจะรู้ได้แค่ว่า สองเจ้านี้มี 3 Row ที่เหมือนกัน แต่ไม่รู้ว่า B มีอีก Row ที่ต่าง)
ปัจจุบันผมใช้วิธี SELECT ทีละ Client แล้วมาเทียบกันใน Excel แบบ Manual
เลยอยากทราบว่า มีวิธีเขียน query ที่สามารถเชคได้เลยหรือไม่
ปล. โครงสร้างมันอาจดูแปลกๆนะครับ แต่มันถูกออกแบบมาเป็นแบบนี้ด้วยเหตุผลบางประการ ซึ่งมันไม่ใช้หน้าที่ผมที่จะไป Redesign มัน
ขอถามคำสั่ง sql ในการ query ข้อมูลแบบนี้หน่อยครับ
โดยหลักๆคือจะมี CLIENT เก็บชื่อลูกค้า PRODUCT เก็บชื่อ product ที่ลูกค้าเจ้านั้นซื้อ
และก็ VALUE1 จนถึง VALUEn เก็บรายละเอียดต่างๆ (ในที่นี้ผมขอยกตัวอย่างมาแค่ 1-3 นะครับ)
โดยที่ ลุกค้า 1 เจ้าสามารถมีได้หลายๆ PRODUCT และในทางเดียวกัน PRODUCT ก็สามารถมีผู้ซื้อได้หลายเจ้าเหมือนกัน (Many to Many)
ทีนี้โจทย์ของผมคือ ผมต้องการ Verify ว่า ลูกค้า 2 เจ้าที่ใช้ Product ตัวนึง เช่น ลุกค้า A กับ ลูกค้า B ที่ใช้ Product AA นั้นมี VALUE ต่างๆเหมือนกันหรือไม่
โดยที่ผลลัพท์ที่ผมต้องการ ผมต้องการแค่เชคว่า เหมือนกัน หรือ ไม่เหมือนกัน (ทั้งจำนวน Row และ value ข้างใน)
ผมลองเขียนว่า
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
ผลลัพท์ก็ยังไม่ได้ตามที่ต้องการเท่าไหร่ เพราะบางทีลูกค้าต่างเจ้า ก็มีจำนวน Row ต่างกัน วิธีนี้มันทำให้รู้แค่จำนวน Row ที่เหมือนกัน แต่มันไม่สามารถทราบได้ว่ามี Row ที่ต่างหรือจำนวนไม่เท่ากันหรือไม่ (เช่น A มี 3 Row B มี 4 Row เราจะรู้ได้แค่ว่า สองเจ้านี้มี 3 Row ที่เหมือนกัน แต่ไม่รู้ว่า B มีอีก Row ที่ต่าง)
ปัจจุบันผมใช้วิธี SELECT ทีละ Client แล้วมาเทียบกันใน Excel แบบ Manual
เลยอยากทราบว่า มีวิธีเขียน query ที่สามารถเชคได้เลยหรือไม่
ปล. โครงสร้างมันอาจดูแปลกๆนะครับ แต่มันถูกออกแบบมาเป็นแบบนี้ด้วยเหตุผลบางประการ ซึ่งมันไม่ใช้หน้าที่ผมที่จะไป Redesign มัน