หัวข้อ: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: theonsenz ที่ 23 ธันวาคม 2012, 10:50:01 SELECT table1.id_name,table1.date,table1.charac,table2.name FROM table1INNER JOIN table2 ON table2.id_name=table1.id_name
ตอนนี้คือข้อมูลที่ select ออกมาทั้งหมดครับ แต่อยากให้กรองออกโดยที่เอาข้อมูลที่ table1.id_name ซ้ำกันออกไปอ่ะครับ โดยให้แสดงข้อมูลล่าสุด ช่วยทีครับ ขอบคุณล่วงหน้า :P หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: mikeyx ที่ 23 ธันวาคม 2012, 10:50:44 group by
หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: theonsenz ที่ 23 ธันวาคม 2012, 10:58:11 group by มันไม่ใช่ข้อมูลล่าสุดอ่ะครับ มันเอาตัวแรกออกมา
หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: dekmv ที่ 23 ธันวาคม 2012, 11:30:43 SELECT DISTINCT column_name(s)
FROM table_name ผมไม่ได้ว่า mySQL หรือ Oracle นะครับ ถ้าผิดขออภัยนะครับ หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: c0untry-m@n ที่ 23 ธันวาคม 2012, 11:34:47 ประมาณนี้หรือเปล่าลองดูนะครับ ผมไม่ได้ลองนะ ผิดพลาดขออภัย
SELECT DISTINCT(table1.id_name),table1.date,table1.charac,table2.name FROM table1 LEFT JOIN table2 ON table2.id_name=table1.id_name หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: psuriya ที่ 23 ธันวาคม 2012, 11:45:14 SELECT table1.id_name,table1.date,table1.charac,table2.name FROM table1INNER JOIN table2 ON table2.id_name=table1.id_name ตอนนี้คือข้อมูลที่ select ออกมาทั้งหมดครับ แต่อยากให้กรองออกโดยที่เอาข้อมูลที่ table1.id_name ซ้ำกันออกไปอ่ะครับ โดยให้แสดงข้อมูลล่าสุด ช่วยทีครับ ขอบคุณล่วงหน้า :P GROUP BY table1.id_name ORDER BY table1.id_name DESC ถ้า table1.id_name เป็นตัวเลขและAuto ครับ หรือถ้ามีฟิลด์ที่เก็บเป็น Datetime ก็ ORDER BY ฟิลด์นั้นครับ หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: c0untry-m@n ที่ 23 ธันวาคม 2012, 13:09:16 ประมาณนี้หรือเปล่าลองดูนะครับ ผมไม่ได้ลองนะ ผิดพลาดขออภัย SELECT DISTINCT(table1.id_name),table1.date,table1.charac,table2.name FROM table1 LEFT JOIN table2 ON table2.id_name=table1.id_name ที่ไม่ใช้ group by เพราะถ้ามีคอลัมภ์อื่นต่างกัน ถึง group by มันก็จะได้ id_name ซ้ำกันมาอีกครับ เช่น ในกรณีที่ 1 id_name มี date ต่างหลาย record ที่ต่างกัน เป็นต้นครับผม อันนี้หมายถึงการ group by ทุกฟิลด์ที่ดึงมานะครับ แต่ถ้า group by id_name ตัวเดียว แต่ดึงข้อมูลหลายฟิลด์ ไม่แน่ใจว่า mysql ใช้ได้หรือเปล่า แต่สำหรับ ms sql ไม่ได้ครับ ตัวอื่นไม่แน่ใจ ทั้งนี้ผมก็ยังไม่ได้ทดสอบนะครับ เพียงแต่แนะนำแนวทางให้ไปทดลองเองครับ ผิดพลาดขออภัย หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 24 ธันวาคม 2012, 02:17:29 ผมว่าทำแบบนี้นะ
จากเงื่อนไขนี้ >> เอาข้อมูลที่ table1.id_name ซ้ำกันออกไปอ่ะครับ โดยให้แสดงข้อมูลล่าสุด จะได้ SELECT DISTINCT t.id_name from table1 t ORDER BY t.date จากนั้นก็ยัด sub query ลงไปครับ จะได้ SELECT DISTINCT t.id_name,(select * from table1 ta where ta.pk = t.pk) from table1 t ORDER BY t.date จบละครับ ใน sub query แก้เองเด้อ select * guide ให้เฉยๆ หัวข้อ: Re: ทำ select sql แบบเอาข้อมูลไม่ซ้ำกันมาแสดงทีครับ เริ่มหัวข้อโดย: ohmohm ที่ 26 ธันวาคม 2012, 17:38:53 สมมติว่ามี table1.date เก็บค่าความล่าสุด (คือวันเวลา ยิ่งมากยิ่งล่าสุด)
SELECT table1.id_name, table1.date, table1.charac, table2.name FROM (SELECT id_name, max(date) AS date, charac FROM table1 GROUP BY id_name, charac) AS table1 INNER JOIN table2 ON table2.id_name=table1.id_name |