#php #mysql
#php #mysql
Вопрос:
У меня есть следующий запрос:
SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum
FROM uc
INNER JOIN ci ON uc.cid = ci.cardId
WHERE uc.uid = '$userId' and ci.name like '%$updateSearchCriteria%'
Я бы включил 'updateSearchCriteria'
с другими строками. Итак, прямо сейчас, если пользователь вводит имя пользователя, он будет искать только эти имена в name
строке и возвращать его.
Так что, если updateSearchCriteria
был счет -> все счета вернутся.
Я хотел бы, чтобы пользователь вводил year
, name
или даже cardvar
.
SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum
FROM uc
INNER JOIN ci ON uc.cid = ci.cardId
WHERE uc.uid = '$userId' and ci.year like '%$updateSearchCriteria%' or
ci.name like '%$updateSearchCriteria%' or
ci.cardvar like '%$updateSearchCriteria%'
Итак, теперь, если я введу счет за 2018 год -> ничего не возвращается.
или база счетов 2018 (база является cardvar) ничего не вернет. Может быть, мне нужно объединить все в другой столбец? Не уверен.
Как я могу объединить несколько строк в предложение where / like?
Ответ №1:
Вы должны добавить фигурные скобки, чтобы установить определенный приоритет оператора и использовать отдельные критерии поиска для каждого столбца:
WHERE
uc.uid = '$userId'
AND
(
ci.year LIKE '%$yearBeingSearched%'
OR
ci.name LIKE '%$nameBeingSearched%'
OR
ci.cardvar LIKE '%$cardvarBeingSearched%'
)
Комментарии:
1. Я боялся, что мне понадобятся отдельные критерии поиска. В конце концов, я могу демонстративно изменить код клиента, если это необходимо. Большое спасибо!
Ответ №2:
Вы можете использовать функцию CONCAT(), если у вас разные столбцы с одинаковыми критериями:
WHERE uc.uid = '$userId' AND concat(ci.year, ci.name, ci.cardvar) like '%$cardvarBeingSearched%'
Вы можете добавить больше столбцов в функцию CONCAT() по своему усмотрению.
Ответ №3:
Вы можете разделить свои критерии пробелами и использовать оператор like для каждой разделенной строки. В этом случае вам нужно создать динамический запрос
Комментарии:
1. это бессмысленно без примера. но спасибо.