基于用户输入,可以是单个或多个值,并使用下表
+------+--------+
| seed | item |
+------+--------+
| 1 | apple |
| 1 | grapes |
| 2 | apple |
| 3 | grapes |
| 3 | banana |
+------+--------+
我想返回
我当前的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'));
适用于单个值。在循环中迭代,我只是在当前的$查询中添加更多搜索词。最后,我需要找到所有查询的交集。这是我目前的主要关注点。
答案 0 :(得分:0)
输入可用尝试
SELECT seed
FROM Items
WHERE item IN ('apple', 'grapes')
GROUP BY seed
HAVING COUNT(item) >= 2
;
SELECT seed
FROM Items
WHERE item IN ('apple')
GROUP BY seed
HAVING COUNT(item) >= 1
;
SELECT seed
FROM Items
WHERE item IN ('apple', 'banana')
GROUP BY seed
HAVING COUNT(item) >= 2
;
HAVING
子句中要比较的总数是项目数,您要检查相应的批次。
如果需要进一步的细节或调整,请发表评论。