select ค่าที่มากสุดอันดับ1 และอันดับ2

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: select ค่าที่มากสุดอันดับ1 และอันดับ2

Re: select ค่าที่มากสุดอันดับ1 และอันดับ2

โดย aei_ou » 04/08/2009 3:06 pm

ขอบคุณมากครับ ทำได้แล้ว

ผมใช้วิธี temp table เข้าช่วยครับ

Re: select ค่าที่มากสุดอันดับ1 และอันดับ2

โดย mindphp » 04/08/2009 1:40 pm

mindphp เขียน:ใช้ GROUP BY จะได้ อันดับ มา
ใช้ ORDER BY จะได้ ข้อมูลที่เรียงตามลำดับออกมา
ต้อง Query มาสองครั้ง group และเรียงมันจะได้ค่า สูงสุด 1,2,3,...
เช่น มากสุด 1=16 ,2=14
ก็เอา 16 ,14 เป็นเงือนไขในการ query อีกครั้ง

Re: select ค่าที่มากสุดอันดับ1 และอันดับ2

โดย aei_ou » 04/08/2009 1:04 pm

คือผมจะ query อันแรกเอาค่าที่มากที่สุดออกมาแสดง จะได้ 16,16 เท่านั้น

แล้วก็สั่ง query อีกอัน เอาค่าที่มากที่สุดอันดับ 2 มา จะได้เฉพาะ 14,14,14,14

ถ้า group by มาแล้ว แล้ว order by desc เอาค่าสูง
สุดขึ้นก่อน แล้ว Limit 1 มันก็ได้ แต่ค่าที่สูงสุดอันดับ 1 มันมีมากกว่า1ค่า พอlimit 1 มันจะได้ค่าเดียว

แล้วข้อมูลในฐานข้อมูลจิงๆ เราจะไม่รู้เลยว่ามีอะไรมั่ง เพราะ ต้องselectตามเงื่อนไข where เราจะไม่รู้เลยว่าอันดับที่1 สูงสุดมีกี่ค่า อันดับ2มีกี่ค่า มันเลยใช้ limit ไม่ได้
มึนเลย

Re: select ค่าที่มากสุดอันดับ1 และอันดับ2

โดย mindphp » 04/08/2009 12:24 pm

ใช้ GROUP BY จะได้ อันดับ มา
ใช้ ORDER BY จะได้ ข้อมูลที่เรียงตามลำดับออกมา

select ค่าที่มากสุดอันดับ1 และอันดับ2

โดย aei_ou » 04/08/2009 11:42 am

สมมุตมีข้อมูลในตารางคือ 16,16,14,14,14,14,5,4,1

query ข้อมูลที่มากที่สุด
อันดับ1 คือ 16,16
อันดับ2 คือ 14,14,14,14

ให้มันแสดงข้อมูลออกมาทั้งหมดทั้งอันดับ 1 และ 2 จะquery ยังไงคับ

ข้างบน