เรียงลำดับแถวตามผลลัพธ์ของอัลกอริทึมที่อยู่นอกแบบสอบถาม db

ฉันกำลังพยายามเรียงลำดับผลลัพธ์ของการสืบค้น db ตามอัลกอริทึมที่อยู่นอกคำสั่ง sql

ตัวอย่างเช่น แต่ละแถวมีคอลัมน์ author_karma และ pageviews คอลัมน์ ฉันต้องการเรียงลำดับผลลัพธ์ด้วยอัลกอริทึมที่คำนวณเป็น php หลังจากดึงแถวแล้ว...

อัลกอริทึมอาจมีลักษณะเช่นนี้

$score = intval($author_karma) + (intval($pageviews)/100) + intval($age)

ในเว็บไซต์เช่นข่าวแฮ็กเกอร์มีการคำนวณในการสืบค้น sql หรือไม่ พวกเขาทำงานนี้ได้อย่างไร? หากฉันพยายามจัดเก็บคะแนนไว้ในฐานข้อมูล ฉันจะอัปเดตคะแนนบ่อยแค่ไหน (โดยเฉพาะเมื่อเกี่ยวข้องกับคะแนน)


person Andrew Samuelsen    schedule 15.12.2011    source แหล่งที่มา
comment
คุณสามารถเรียงลำดับตามฟังก์ชันในฐานข้อมูลเกือบทั้งหมดได้ ดังนั้นคุณก็แค่ใช้ฟังก์ชันนั้นในส่วนคำสั่ง ORDER BY ของคุณ   -  person Brian Hoover    schedule 15.12.2011
comment
มันจะช่วยได้อย่างแน่นอนหากคุณสามารถโพสต์โค้ดที่เกี่ยวข้องได้... เนื่องจากอาจเป็นไปได้ที่จะจัดเรียงสิ่งนี้ใน MySQL แทนที่จะต้องโต้ตอบกับ PHP หลังจากนั้น..   -  person Nonym    schedule 15.12.2011
comment
@BrianHoover สำหรับอัลกอริธึมที่ค่อนข้างง่ายเหมือนที่กล่าวมาข้างต้น ควรทำใน order by หรือเก็บคะแนนไว้ใน db หรือไม่   -  person Andrew Samuelsen    schedule 15.12.2011
comment
@AndyPandy - ฉันอาจจะทำตามลำดับเพียงเพราะค่าเหล่านั้นทั้งหมดจะมีการเปลี่ยนแปลงค่อนข้างสม่ำเสมอ   -  person Brian Hoover    schedule 15.12.2011


คำตอบ (1)


คุณสามารถทำได้ง่ายๆ ในแบบสอบถาม

select this, that, other, (author_karmar + ( pageviews/100 ) + age ) as score from table order by score desc
person Galen    schedule 15.12.2011