Извините, что я такой начинающий. Просто не могу опустить голову match()
и against()
.MySQL match() против() - порядок по количеству баллов?
У меня есть набор из 10 переменных, в основном ответы из 10 вопросов. Я хочу сопоставить их с таблицей MYSQL и затем выбрать 5 наиболее релевантных результатов в порядке убывания.
Я также хочу показать процент оценки для каждого результата.
Переменные:
$a1 = y;
$a2 = n;
$a3 = n;
$a5 = y;
.
.
.
$a10 = n;
Моя структура таблицы что-то вроде этого:
PERSON_NAME, AGE, A1, A2, A3, A5... A10
Результаты, которые я хочу быть проявлением, как это:
Питер Смит (100%)
Jane Grey (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));
«Будет ли этот запрос работать?» Почему бы вам не попробовать? :) – thatidiotguy
^^^ избили меня ^^^ –
[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – esqew