DISTINCT 2 ตารางเขียนยังไงครับ ทำได้แค่ตารางเดียว งมนานมาก
อันที่จริงไม่น่าจะมีอะไรหากคุณ select ข้อมูลออกมาได้อยู่แล้ว แค่ใส่ DISTINCT เข้่าไปก็น่าจะทำงานได้ตามต้องการ
แนะนำว่า เอาวงเล็บ ( ) ออกค่ะ
Date :
2011-07-28 10:40:27
By :
ultrasiam
DISTINCT( detail.id_detail, tel.id_tel)
Date :
2011-07-28 10:49:15
By :
PlaKriM
ไม่ติด Error ละครับ ขอบคุณครับ แต่ปัญหาคือข้อมูลไม่ออกมามาอันเดียว มันออกมา 2 อันครับ
Code (PHP)
$strSQL ="SELECT DISTINCT detail.id_detail,tel.tel,detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM detail INNER JOIN contact ON detail.id_detail = contact.id_detail INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con INNER JOIN fax ON detail.id_detail = fax.id_detail INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T'
Date :
2011-07-28 10:49:19
By :
MyZeus
Code (PHP)
SELECT DISTINCT detail.id_detail,tel.tel,detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM (((detail INNER JOIN contact ON detail.id_detail = contact.id_detail) INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con) INNER JOIN fax ON detail.id_detail = fax.id_detail) INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T'
ลองใส่วงเล็บดูนะครับ
Date :
2011-07-28 11:26:05
By :
attaprawat
เหมือนเดิมครับ
เบอร์โทรศัพท์มันขึ้น 2 เบอร์ ใน 1 ธุรกิจ มันจะออกมาเป็น 2 เรคคอร์ดครับ พอมีวิธีแก้ไหมครับ เหมือนมันไปนับตาราง tel เลย
Date :
2011-07-28 11:35:36
By :
MyZeus
ข้อดู DATA หน่อยครับ
Date :
2011-07-28 13:19:51
By :
attaprawat
ผลลัพธ์ ที่จริงควรจะออกเรคคอร์ดเดียว
Code (PHP)
$strSQL ="SELECT DISTINCT detail.id_detail,tel.id_detail,detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM (((detail INNER JOIN contact ON detail.id_detail = contact.id_detail) INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con) INNER JOIN fax ON detail.id_detail = fax.id_detail) INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T' ";
Date :
2011-07-28 13:33:56
By :
MyZeus
มันน่าจะ query ออกมาถูกแล้วค่ะ เพราะข้อมูลไม่ได้ซ้ำกัน
Date :
2011-07-28 13:46:00
By :
ultrasiam
เหมือนมันจะนับจากตารง tel นะครับ ผมว่านะ เพราะมันบอกว่ามีทั้ง 2 Record หาวิธีแก้ไม่ได้ซักที T_T
Date :
2011-07-28 13:52:21
By :
MyZeus
แน่นอนครับ ต้องออกมา 2 เพราะข้อมูลไม่เหมือนกัน
Date :
2011-07-28 14:01:31
By :
attaprawat
แต่ผมใช้ DISTINCT แล้วนะ มันน่าจะออกมาอันเเดียว
Date :
2011-07-28 14:17:32
By :
MyZeus
มันออกมาถูกต้องแล้วค่ะเพราะข้อมูลสองเรคคอร์ดที่คุณนำมาแสดงนั้นไม่ได้ซ้ำกัน
ธุรกิจ2.....21234567
ธุรกิจ2.....21234568
ถ้าซ้ำกันต้องเป็น
ธุรกิจ2.....21234567
ธุรกิจ2.....21234567
Date :
2011-07-28 14:37:21
By :
ultrasiam
ผมอยากให้มันออกอันเดียวอะครับ เพราะที่ออกมาเป็น 1 ธุรกิจ มี 2 เบอร์ เลยออกมา 2 record
แต่อยากให้มันออก 1 ธุรกิจ มี 1 เบอร์โทร ที่เป็นเบอร์แรก
Date :
2011-07-28 14:54:51
By :
MyZeus
จะให้มันออก ธุรกิจ2.....21234567 อย่างงี้อะครับ
Date :
2011-07-28 15:48:00
By :
MyZeus
ใช้ GROUP BY ค่ะ
Date :
2011-07-28 15:57:03
By :
ultrasiam
ใช้ได้เหรอครับ มันต้องใช้ร่วมกับพวก function คณิตศาสตร์พวก SUM COUNT อะไรประมาณนี้ หรือผมเข้าใจผิดไปหรือป่าวครับ
Date :
2011-07-28 16:04:54
By :
MyZeus
ลองดูค่ะ ไม่ลองไม่รู้ ที่แนะนำไป เพราะลองแล้ว
Date :
2011-07-28 16:08:59
By :
ultrasiam
Error ครับ
Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near '*'. (severity 15) in C:\AppServ\www\CC\detail_show.php on line 770
Code (PHP)
$strSQL ="SELECT DISTINCT detail.id_detail,tel.id_detail,detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM (((detail INNER JOIN contact ON detail.id_detail = contact.id_detail) INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con) INNER JOIN fax ON detail.id_detail = fax.id_detail) INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T' GROUP BY detail.id_detail,tel.id_detail";
Date :
2011-07-28 16:27:57
By :
MyZeus
error message ว่า Incorrect syntax near '*'
ปัญหานี้เกิดขึ้นเมื่อ select GROUP BY ใช่ไหมคะ เมื่อเอา GROUP BY ออก ก็ select ข้อมูลได้ใช่ไหมคะ
ยังไงลอง GROUP BY detail.id_detail แค่ตัวเดียวดูก่อนนะคะ
** อีกอย่าง เอา DISTINCT ออกได้เลยค่ะ select ปกติเลยตอนนี้ลองใช้ GROUP BY แทน เพราะลองแล้วเชื่อม 3 ตารางทำงานได้ค่ะ
ประวัติการแก้ไข 2011-07-28 17:00:30
Date :
2011-07-28 16:55:17
By :
ultrasiam
Error อยู่ครับ มันจะให้เราดึงฟิวส์มาหมดเลย อย่างงี้เราต้องดึงมั้ง 5ตาราง ทุกฟิวเลยสิครับ
Warning : mssql_query() [function.mssql-query ]: message: Column 'detail.ThaiName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. (severity 16)
Code (PHP)
$strSQL ="SELECT detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM (((detail INNER JOIN contact ON detail.id_detail = contact.id_detail) INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con) INNER JOIN fax ON detail.id_detail = fax.id_detail) INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T' GROUP BY detail.id_detail";
Date :
2011-07-28 21:21:47
By :
MyZeus
ไม่ Error ครับ แต่ผลลัพธ์ ยังออก 2 Record เหมือนเดิม จะแก้ยังไงดีเนี่ย เอ้อออ งงเป็นไก่ตาแตกเลยเรา
Code (PHP)
$strSQL ="SELECT detail.*, tel.*, fax.*, contact.*, contact_tel.* FROM (((detail INNER JOIN contact ON detail.id_detail = contact.id_detail) INNER JOIN contact_tel ON contact.id_con = contact_tel.id_con) INNER JOIN fax ON detail.id_detail = fax.id_detail) INNER JOIN tel ON detail.id_detail = tel.id_detail WHERE detail.Enable='T' GROUP BY detail.id_detail, detail.ThaiName, detail.EngName, detail.word, detail.type, detail.orther, detail.Address, detail.province, detail.amphur, detail.district,detail.zip, detail.mail, detail.web, detail.hotline, detail.busi, detail.bg, detail.service, detail.etc, detail.detail, detail.price, detail.branch, detail.commonday,
detail.holiday, detail.note, detail.town1, detail.town2, detail.town3, detail.town4, detail.rate, detail.Created, detail.CreatedBy, detail.CreatedTime, detail.Updated,detail.UpdatedBy, detail.UpdatedTime, detail.IsSecret, detail.IsActive, detail.Enable, detail.Deleted, detail.DeletedBy, detail.DeletedTime,tel.id_tel, tel.tel, tel.id_detail, fax.id_fax, fax.fax, fax.id_detail, contact.id_con, contact.con_name, contact.c_name, contact.c_lastname, contact.c_add, contact.c_province, contact.c_amphur, contact.c_district,
contact.c_zip, contact.id_detail,contact_tel.id_con_tel, contact_tel.c_tel, contact_tel.id_con";
Date :
2011-07-28 21:48:53
By :
MyZeus
ผมว่า DISTINCT ที่มันออก 2 อันเพราะ id_detail ซ้ำกันก็จริง แต่เบอร์ tel ไม่ซ้ำ มันเลยออก 2 อัน มีวิธีไหนให้มันออกเฉพาะอันแรกไหมครับ
Date :
2011-07-29 09:42:38
By :
MyZeus
ใช้ GROUP BY detail.id_detail ดุครับ
Date :
2011-07-29 15:08:56
By :
Mo
Group By ทุกตัวที่ Distinct ยกเว้นเบอร์โทรนะครับ
Date :
2011-07-29 15:10:25
By :
Mo
Load balance : Server 01