0

first_name と last_name を持つ学生テーブルがあります。名または姓で検索を適用すると正しいレコードが得られますが、完全な名前で検索すると何も返されません。これが私のクエリです

SELECT 
  `student_personal_info`.`spi_id` AS `sid`, 
  `student_personal_info`.`spi_first_name` AS `fname` 
FROM 
  `student_personal_info` 
WHERE 
 ((spi_first_name like '%test developer%') OR (spi_last_name like '%test developer%') 
ORDER BY 
 `spi_first_name` ASC

両方のフィールドの組み合わせで検索可能にする方法はありますか。

ファーストネーム.ミドルネームとラストネームを入力しても記録されますが、ファーストネームとラストネームがミドルネームではない場合は取得されません。

SELECT `student_personal_info`.`spi_id` AS `sid` , `student_personal_info`.`spi_first_name` AS `fname`
FROM `student_personal_info`
WHERE (
spi_scholar_no LIKE '%amir hussain khan%'
)
OR (
CONCAT( spi_first_name, ' ', spi_middle_name, ' ', spi_last_name ) LIKE '%amir hussain khan%'

私もこれを試しましたが、完全一致でのみ機能します。

SELECT `student_parents_info`.`spri_spi_id` AS `sid`
FROM `student_parents_info`
WHERE (MATCH (spri_first_name, spri_middle_name, spri_last_name) AGAINST ('Pramod Kumar Sharma*' IN BOOLEAN MODE ) )
ORDER BY `spri_first_name` ASC
LIMIT 0 , 30

他に提案があれば教えてください。

4

5 に答える 5

1

concat() を使用して検索してみてください。

SELECT `student_personal_info`.`spi_id` AS `sid` , `student_personal_info`.`spi_first_name`    AS `fname`
FROM `student_personal_info`
  WHERE CONCAT( spi_first_name, ' ', spi_middle_name, ' ', spi_last_name ) LIKE '%test%'
ORDER BY `spi_first_name` ASC

それはいつも私のために働きます。

于 2013-03-13T12:01:37.433 に答える
0

このようにしてみてください

SELECT `student_personal_info`.`spi_id` AS `sid`, `student_personal_info`.`spi_first_name` AS `fname` 
FROM `student_personal_info`
WHERE 
    ((spi_first_name like '%amir khan%') OR (spi_last_name like '%test develope%'))
ORDER BY `spi_first_name` ASC

')' がありません

于 2013-03-13T11:53:53.557 に答える
0

Do you receive a full name to perform the search with? or do you always get 2 separate (first and last name)?

If you get one full name string, change your query to concatenate first and last name, and use

GROUP BY HAVING(full_name LIKE %search_term%) 

if you get two separate strings, just change your OR to AND between the first and last name LIKE tests.

于 2013-03-13T11:54:45.503 に答える
0

test developetotestとusing php を分割しdevelope、次のようにクエリを記述します。

$first = 'test';
$last  = 'develope';

$query = "SELECT `student_personal_info`.`spi_id` AS `sid`, `student_personal_info`.`spi_first_name` AS `fname` FROM `student_personal_info` WHERE 
(spi_first_name like '%".$first."%') OR (spi_last_name like '%".$last."%') 
ORDER BY `spi_first_name` ASC";

2 つ以上の単語がある場合は、単語を分割して動的whereクエリを作成します。

于 2013-03-13T11:59:03.200 に答える
0

CONCATで試してください:

SELECT
  `student_personal_info`.`spi_id` AS `sid`,
  `student_personal_info`.`spi_first_name` AS `fname`
FROM
  `student_personal_info`
WHERE 
  CONCAT(spi_first_name, ' ', spi_last_name) LIKE '%test develope%'
ORDER BY
 `spi_first_name` ASC
于 2013-03-13T11:55:33.810 に答える