2014-11-06 1 views
-4

죄송합니다. 저는이 초심자입니다. 그냥 내 머리를 match()against() 주위에 가져올 수 없습니다.MySQL의 match()와() - score by order?

필자는 10 개의 변수 세트를 가지고 있는데, 본질적으로 10 개의 질문에서 답합니다. 나는 그것들을 MYSQL 테이블과 비교하고 5 개의 가장 관련있는 결과를 내림차순으로 선택하려고합니다.

각 결과에 대한 점수의 백분율을 표시하고자합니다.

변수는 다음과 같습니다

PERSON_NAME, AGE, A1, A2, A3, A5... A10

I가 표시되고 싶어 결과는 다음과 같이이다 :

피터 스미스 (

$a1 = y; 
$a2 = n; 
$a3 = n; 
$a5 = y; 
. 
. 
. 
$a10 = n; 

내 테이블 구조는 다음과 같은 것입니다 100 % 일치)

제인 그레이 (65 %

왜이 작동하지 않는 경기)

질 샌더 (30 % 일치)?

$query = "SELECT *, MATCH($a1,$a2,$a3, $a4,$a5,$a6,$a6,$a7,$a8,$a9,$a10) AGAINST('A1, A2, A3, A4, A5, A6, A7, A8, A9, A10') AS score FROM table_name WHERE MATCH($a1,$a2,$a3, $a4,$a5,$a6,$a6,$a7,$a8,$a9,$a10) AGAINST('A1, A2, A3, A4, A5, A6, A7, A8, A9, A10') ORDER BY SCORE DESC"; 

$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
--------- 
$max_score = 0; 
$data = array(); 

do { 
    if ($row['score'] > $max_score) { 
     $max_score = $row['score']; 
    } 
    echo $row['PERSON_NAME']." "[email protected]_format(($row['score']/$max_score)*100,0)."%<br>n"; 
} while ($row = mysql_fetch_assoc($result)); 
+1

"이 쿼리가 작동합니까?" 왜 해보지 그래? :) – thatidiotguy

+3

^^^ 나를 이길 수 있습니다 ^^^ –

+2

[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오. http://bit.ly/phpmsql. 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). – esqew

답변

0

당신은 뒤로 검색을 수행 한 것으로 나타났습니다 :

여기 내 코드입니다. 구문은 당신이 될 겁니다, 당신은 당신이 당신의 테이블에 yn라는 이름의 필드를 가질 가능성은 희박하기 때문에

SELECT ... MATCH(y, n, y, y, ....) AGAINST ('field2 field2 ... fieldN') 

에 해당하는 것으로 보이는하고있는

SELECT ... MATCH (field1, field2, ... , field N) AGAINST ('search string') 

입니다 알 수없는/존재하지 않는 필드로 인한 mysql 구문 오류.

당신은 당신이 오류에 대한 이야기 ​​한 것

$result = mysql_query($sql) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^ 

로, 스크립트에서 같은를도 MINIMAL 오류 처리가 있다면. NEVER 성공을 가정하십시오. 항상 실패로 간주하고 성공을 즐거운 놀라움으로 간주하십시오.