2013-07-25 26 views
0

如果這看起來不是一個合適的SO問題,我提前表示道歉。但是,我無法在其他地方找到答案。PHP/MYSQL創建排序算法數據模式

我希望能夠通過一種算法對結果排序,該算法使用規則對基於不同列或變量的結果進行排名。我的直覺是,使用內置的MYSQL ORDER BY比返回記錄集合的操作要快得多。我已經在MYSQL中使用索引來加快字段或兩個字段上的排序。但我不知道如何創建一個規則或公式來加權兩個字段,並對權重進行優先級排序和邏輯處理。

例如:說我有一個評論表。我想創建一個算法,根據不同變量的組合加權,對這些評論進行排序,並輸入一些邏輯。

如在示例中:返回今日編輯的結果。有了所有其他結果,回報基於作者聲譽的50%和創建回顧時的50%。

表評論:

id|reviewtext|lastedited|datecreated|authorid 

表作者

id|name|reputation 

MYSQL/PHP:

$SQL = "SELECT r.*, a.* FROM `reviews` r 
LEFT JOIN `authors` a 
on = r.authorid= a.id 
WHERE reviewtext LIKE '%str%' 
ORDER BY lastedited DESC datecreated DESC reputation DESC"; 

單子首先lastedited,然後通過dateCreated會等

如何做我使用更復雜的邏輯權重等公式?

在此先感謝您的任何建議。

回答

1

您可以使用您的訂單表達式BY子句 -

SELECT r.*, a.* 
FROM reviews r 
INNER JOIN authors a 
    ON r.authorid = a.id 
WHERE reviewtext LIKE '%str%' 
ORDER BY 
    IF(lastedited >= CURRENT_DATE, lastedited, '0000-00-00') DESC, 
    (SOME EXPRESSION EVALUATING DATE AND REPUTATION) DESC