на основе пользовательского ввода, который может быть один или несколько значений, и используя следующую таблицуСоздание многозначного поиска, борется с SQL
+------+--------+
| seed | item |
+------+--------+
| 1 | apple |
| 1 | grapes |
| 2 | apple |
| 3 | grapes |
| 3 | banana |
+------+--------+
Я хочу вернуть
- 1, когда пользователь (яблоко, виноград),
- [1, 2] для (яблоко) и
- ничего для (яблоко, банан).
Мой текущий код PHP
$keyword = Input::get('keyword');
$searchTerms = explode(",", $keyword);
$query = DB::table('items');
foreach($searchTerms as $term)
{
$query->where('item', 'LIKE', '%'.$term.'%');
}
$results = $query->distinct()->get(array('seed'));
работы для отдельных значений. Итерируя в цикле, я просто добавляю больше условий поиска к текущему $ query. В конце мне нужно найти пересечение всех запросов. В настоящее время это моя главная забота.
Без каких-либо указаний, какая база данных используется, нет структуры таблицы и нет данных образца, трудно понять, что именно вы хотите достичь, - и еще сложнее предоставить вам полезный ответ. – Abecee
@Abecee Извините! Это mysql Я нарисовал соответствующие части моей таблицы здесь http://i.imgur.com/er3GD9b.png, и пример будет (поиск: apple, grape returns: 1) (поиск: apple возвращает: 1 2) (поиск: виноград, возврат бананов: 3) –
Спасибо за работу над вашим вопросом. Но, пожалуйста, попробуйте еще раз. Лучше выписать образцы данных вместо привязки к изображению. И ваш алгоритм выбора ключа, основанный на представленных значениях, по-прежнему выглядит размытым (помимо/возможно, из-за того, что последнее предложение было отрезано). – Abecee