0
を取得:MySQLフルテキスト検索。どのように私はこのような類似した何かをするだろう、FTS条件ですべてのレコード
SELECT *
FROM
(SELECT cs.student_id,
cs.class_id,
s.student_id_no,
s.student_image,
s.student_first_name,
s.student_middle_name,
s.student_last_name,
s.student_year,
s.student_section,
s.student_email_address,
s.student_contact_no
FROM `class_students` cs
JOIN classes cls ON cs.class_id = cls.class_id
JOIN students s ON cs.student_id = s.student_id
WHERE cls.class_id = 1
AND cls.teacher_id = 1
AND is_enrolled = 1) AS s
WHERE MATCH(s.student_id_no, s.student_first_name, s.student_middle_name, s.student_last_name, s.student_email_address, s.student_contact_no) AGAINST ('*' IN BOOLEAN MODE)
が、それは私にエラーを与える:
SELECT * FROM students WHERE student_first_name LIKE "%" OR student_last_name LIKE "%" ...
私の現在のクエリがあります。
#1064 - syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or '*'
IN BOOLEAN MODE
を削除しようとしました。
検索テキストが空の場合は、すべてのレコードを取得します。
AGAINST
節の*
は、検索文字列とコンカチネーションされます。
AGAINST('mysearch*' IN BOOLEAN MODE)
。私は途中でPDOを使用しています。
私が意図したことは、渡された検索テキストが空の場合、すべてのレコードを表示したいと思います。 'LIKE'条件では、' WHERE field LIKE '%' 'はすべてのレコードを検索します。検索テキストが空でない場合は、 'WHERE field LIKE 'searchText%''となり、関連するレコードを取得します。 'FULLTEXT SEARCH'条件' MATCH ... AGAINST'と同様のことをどうすればできますか? –
はい、それは '... AGAINST( 'term *' ...)'ですが、単純に ''*''を持つことはできないと思いますので、コードを書く必要があります。 –
それはできないのですか? :( –