2 つの列 (名前と姓) を使用して検索アプリケーションを作成しましたが、1 人に 2 つ以上の名前があると機能しません。3 つの名前と姓を持つ人を検索するにはどうすればよいですか?
コントローラ:
class PersonController < ApplicationController
def search
@people = Person.find(:all,:conditions=>["(
name LIKE ? OR
lastname LIKE ? OR
(concat(name, \" \", lastname) LIKE ? )
)" ,
"%#{params[:query]}%",
"%#{params[:query]}%",
"%#{params[:query]}%" ]
)
end
end
意見
<% form_tag :controller=>"person",:action=>"search" do %>
Nombre o Apellido
<%= text_field_tag "query", params[:query]
<% end %>
例
|name| |Lastname|
Marcos Ignacio Raul Perez
ログでこれを見ました:マルコス・イグナシオ・ラウル・ペレスを検索すると機能します
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Ignacio Raul Perez%' OR
lastname LIKE '%Marcos Ignacio Raul Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Ignacio Raul Perez%' )
))
Ignacio Raul Perez を検索すると機能します
SELECT * FROM `people`
WHERE ((
name LIKE '%Ignacio Raul Perez%' OR
lastname LIKE '%Ignacio Raul Perez%'
OR (concat(name, " ", lastname) LIKE 'Ignacio Raul Perez%' )
))
Raul Perez を検索すると機能します
SELECT * FROM `people`
WHERE ((
name LIKE '%Raul Perez%' OR
lastname LIKE '%Raul Perez%'
OR (concat(name, " ", lastname) LIKE 'Perez%' )
))
マルコス・ペレスを検索しても機能しない
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Perez%' OR
lastname LIKE '%Marcos Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Perez%' )
))
Ignacio Perez を検索しても機能しません
SELECT * FROM `people`
WHERE ((
name LIKE '%Ignacio Perez%' OR
lastname LIKE '%Marcos Perez%'
OR (concat(name, " ", lastname) LIKE '%Ignacio Perez%' )
))
マルコス・ラウル・ペレスを検索しても機能しない
SELECT * FROM `people`
WHERE ((
name LIKE '%Marcos Raul Perez%' OR
lastname LIKE '%Marcos Raul Perez%'
OR (concat(name, " ", lastname) LIKE '%Marcos Raul Perez%' )
))
本当に助かります。