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

 3,881   8
URL.หัวข้อ / URL
ไม่เอาข้อมูลซ้ำ

คือว่าผมไม่ต้องการให้ข้อมูลที่มีชื่อเดียวกันออกมาครับ อยากให้ออกมาแค่รายการเดียว
/////////////////////ตัวอย่างโค๊ดใน sql ครับ
SELECT accounts.name, accounts.billing_address_street, accounts.billing_address_city, accounts.billing_address_state, accounts.billing_address_postalcode, accounts.billing_address_country, project_cstm.plateno_c, project_cstm.brand_c, project.name AS ContractNo, wrt_contractpackage.description, showonlabel([Forms]![CC-Sales Reports Dialog]![FromDate],[estimated_start_date],[estimated_end_date]) AS ISCall, project.estimated_start_date, project.estimated_end_date, accounts.phone_fax, accounts.phone_office, accounts.phone_alternate, project.name, project_cstm.model_c, project_cstm.color_c, project_cstm.group_c, project_cstm.cartype_c
FROM project_cstm INNER JOIN (accounts INNER JOIN ((wrt_contrackage_project INNER JOIN (projects_accounts INNER JOIN project ON projects_accounts.project_id = project.id) ON wrt_contrackage_project.project_idb = project.id) INNER JOIN wrt_contractpackage ON wrt_contrackage_project.wrt_contractpackage_ida = wrt_contractpackage.id) ON accounts.id = projects_accounts.account_id) ON project_cstm.id_c = project.id
WHERE (((showonlabel([Forms]![CC-Sales Reports Dialog]![FromDate],[estimated_start_date],[estimated_end_date]))=Yes) AND ((project.estimated_end_date)>=CVDate("01-DEC-1990")) AND ((Format([estimated_end_date],"yymm"))>=Format(Date(),"yymm")));



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

1 @R02898
เพิ่มคำ distinct เข้าไปหลังคำว่า select ดูครับ

Select Distinct Accounts.Nam....
2 @R02901
ทำแล้วครับ ไม่ได้ครับ
3 @R02903
มันก็ขึ้นทุกอันอยู่ดีครับ
4 @R02904
ขอร่วมแสดงความคิดเห็น
ผมมองว่าข้อมูลที่ซ้ำกันแสดงรายการเดียวแล้ว
แต่ปัญหาของท่านน่าจะเป็นเรื่อง(ให้รายชื่อซ้ำแสดงรายการเดียว)
ลองทดสอบใช้แค่ฟิลด์ชื่อ(ฟิลด์เดียว)ครับว่าชื่อซ้ำแสดงชื่อเดียวเปล่า

Select Distinct Accounts.Nam

5 @R02905
เลือกฟิลด์ยาวเป็นกิโล เลยครับ ค่อย ๆ เลือก ทีละ 1-2 เทเบิล เลือกแค่1-2 ฟิลด์ แล้วดูผลไปทีละขั้นตอน ค่อย ๆ ดูว่า จำนวน row เพิ่มขึ้นตอนเพิ่ม ฟิลด์ หรือ table อะไร ครับ
6 @R02909
มันซ้ำตั้งแต่ account.name เลยครับ ผมเลือกแค่ฟิลด์ account.name อย่างเดียวครับ งงเลย
7 @R02920
คุณใช้ INNER JOIN    5 วง มันเลยดูยากว่า วงไหนที่ไปเอาข้อมูลมาซ้ำ
ให้ลองไล่ดูก่อนได้ไหม เพื่อจะหาว่า วงไหนที่มีปัญหา โดยทดลอง แยกแต่ละวงออกมาเป็นแต่ละคิวรี่ ดูใหม่ แล้วสุดท้ายค่อย select จากคิวรี่เหล่านั้นมา join กันอีกที เพราะผมสันนิษฐานว่า บางวงของคุณ มันอาจจะจำเป็นมากๆ   ที่จะต้องใช้ Group By

เช่น ให้ลองแยก วงนี้ ออกมาเป็น 1 คิวรี่ดูก่อน
(projects_accounts INNER JOIN project ON projects_accounts.project_id = project.id) ON wrt_contrackage_project.project_idb = project.id)
ดูว่ามันได้ข้อมูลซ้ำหรือเปล่า มันอาจจะจำเป็นหรือเปล่าที่จะต้อง ใช้ Group By แล้วตั้งชื่อคิวรี่นี้ ว่า Q1

ต่อมาค่อยเอา Q1 นี้ไป join กับ wrt_contrackage_project ตั้งชื่อ Q2 ตรวจสอบแบบเดียวกันอีกรอบ ดูว่า มันจำเป็นต้องใช้ Group By หรือเปล่า

ลองไล่ทดสอบดูครับ
8 @R02950
เอ่อ งงอะครับ ผมมือใหม่ครับเลยไม่ค่อยเข้าใจ คือโปรแกรมที่ให้คุณ yeadram ช่วยดูนี้มันเป็นโปรแกรมที่ผมต้องเอามาแก้ให้เขาครับ ไม่ใช่ว่าผมเป็นคนทำเองครับ ผมเลยไม่แน่ใจว่าจำเป็นต้องใช้อะไรยังไงครับ ผมก็เลยมึนอยู่อะครับ ช่วยแนะนำหน่อยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3402s