2013-12-03 4 views
1

Im пытается создать хранимую процедуру, которая будет искать таблицу users, сопоставляя имя и фамилию, но моя работает только при поиске по фамилии. Может кто-нибудь понять, почемуMysql Сохраненная процедура Поиск

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `SearchUserByName`(
IN in_first_name VARCHAR(100), 
IN in_last_name VARCHAR(100) 
) 
BEGIN 
SELECT * 
FROM `users` 
WHERE in_first_name AND in_last_name = first_name AND last_name; 
END 

ответ

1

Это действительно странно, где положение у вас есть ...

Изменить это:

WHERE ((in_first_name = '') or (first_name = in_first_name)) 
AND ((in_last_name = '') or (last_name = in_last_name)) 

Если вы передаете заготовки для первого или последнего имени, то эта часть предложения игнорируется. Это позволяет вам искать сначала ИЛИ последний ИЛИ оба.

0

Чтобы найти строки, в которых столбец last_name матчей прилагаемого значения аргумента, а в столбце first_name соответствует значению аргумента поставщика ...

изменения ИНЕК к чему-то вроде этого:

FROM `users` 
WHERE first_name = in_first_name 
    AND last_name = in_last_name 
Смежные вопросы