나는 부동산 웹 사이트를 만들었으며 목록의 최신 업데이트 및 완전성 목록 정렬을 원했습니다. 그래서 나는 가장 최근에 업데이트 된 리스팅과 함께 mysql (completion_score)의 필드별로 정렬하는 방법을 알아 내려고 노력해 왔습니다. 완료 점수는 0 점이 좋고 100 점이 완벽하게 100 점 척도가됩니다. 목록을 추가하고 업데이트하고 mysql 데이터베이스에 저장할 때 계산 된 완료 점수를 갖게됩니다. 나는 어떻게 든 날짜와 completion_score를 합쳐서 합쳐야 만 할 것이라고 추측하고 있지만, 하나의 SELECT에서이를 수행하는 방법을 확신 할 수 없습니다.PHP : Advanced ORDER BY
현재 나는 (분명히 완료 점수를 고려하지 않음)이 사용하고 있습니다 :
ORDER BY ".$wpdb->prefix."fsrep_listings.listing_featured DESC, ".$wpdb->prefix."fsrep_listings.listing_last_updated DESC
나는 그것이 지난 주에 완료되었다 만약 내가 완료 점수 30 점을 추가 할 것이라고 생각했다, 지난 달에 완료 되었다면 완료 점수에 20 점을 추가하고, 마지막 3 개월 동안 완료하면 완료 점수에 10 점을 추가합니다. 나는이 업데이트 완료 점수로 주문할 수 있습니다. 문제는 점수를 조정하기 위해 매일 변경해야하는 방법입니다.
ORDER BY $wpdb->prefix.'fsrep_listings.listing_score' + if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 WEEK,30,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 MONTH,20,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 3 MONTHS,10,0)))' DESC';
내가 다음 구문 분석 오류 접수 : 구문 오류, 가정/예기치 않은 T_IF을/... 당신이 필요로하는
은 하나입니다 다른 것보다 더 중요합니까? 아니면 둘 다 똑같이 중요하게 만들려고하십니까? – Amber
PHP와 wordpress 태그를 제거하는 것이 좋습니다. 왜냐하면 mysql을 사용하여 정렬을 수행하려는 경우 대답과 관련이 없기 때문입니다. –
나는 그들이 평등하지만 가중치가있는 점수를 얻으려고 노력하고 있지만, 확실히 전통적인 ORDER BY last_update, completion_score가 아닙니다. 지난 주에 업데이트 된 경우 30 포인트, 1 개월 20 포인트 및 3 개월 10 포인트가 증가합니다. 그래서 본질적으로 목록이 100 % 완성되었고 1.5 개월 전에 업데이트 되었다면 점수는 110 점이됩니다. –