กระทู้เก่าบอร์ด อ.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")));
/////////////////////ตัวอย่างโค๊ดใน 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
2 @R02901
ทำแล้วครับ ไม่ได้ครับ
3 @R02903
มันก็ขึ้นทุกอันอยู่ดีครับ
4 @R02904
ขอร่วมแสดงความคิดเห็น
ผมมองว่าข้อมูลที่ซ้ำกันแสดงรายการเดียวแล้ว
แต่ปัญหาของท่านน่าจะเป็นเรื่อง(ให้รายชื่อซ้ำแสดงรายการเดียว)
ลองทดสอบใช้แค่ฟิลด์ชื่อ(ฟิลด์เดียว)ครับว่าชื่อซ้ำแสดงชื่อเดียวเปล่า
Select Distinct Accounts.Nam
ผมมองว่าข้อมูลที่ซ้ำกันแสดงรายการเดียวแล้ว
แต่ปัญหาของท่านน่าจะเป็นเรื่อง(ให้รายชื่อซ้ำแสดงรายการเดียว)
ลองทดสอบใช้แค่ฟิลด์ชื่อ(ฟิลด์เดียว)ครับว่าชื่อซ้ำแสดงชื่อเดียวเปล่า
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 หรือเปล่า
ลองไล่ทดสอบดูครับ
ให้ลองไล่ดูก่อนได้ไหม เพื่อจะหาว่า วงไหนที่มีปัญหา โดยทดลอง แยกแต่ละวงออกมาเป็นแต่ละคิวรี่ ดูใหม่ แล้วสุดท้ายค่อย 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 ช่วยดูนี้มันเป็นโปรแกรมที่ผมต้องเอามาแก้ให้เขาครับ ไม่ใช่ว่าผมเป็นคนทำเองครับ ผมเลยไม่แน่ใจว่าจำเป็นต้องใช้อะไรยังไงครับ ผมก็เลยมึนอยู่อะครับ ช่วยแนะนำหน่อยครับ
Time: 0.3402s
Select Distinct Accounts.Nam....