首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >进阶搜索

进阶搜索
EN

Stack Overflow用户
提问于 2017-01-09 15:43:47
回答 1查看 140关注 0票数 3

我们已经做了一个搜索字段,您可以搜索多个成分,并找到食谱。

我们想要根据食谱分类,从搜索框中的大部分成分。

代码语言:javascript
运行
复制
if (isset($_POST['search'])) {
$searchquery = $_POST['search'];

$vals = "'" . str_replace(",", "','", $searchquery) . "'";

$query = mysql_query("SELECT * FROM opskrifter WHERE id IN 
(SELECT opskrifterid FROM ingredienser WHERE ing_name IN ('$vals'))") or die("search failed");

能把它们分类吗?

编辑:菜谱表

代码语言:javascript
运行
复制
+---------+----------+-------------+------------+------------+--+
|   id    | name     |  procedure  |  category  |  image_url |  |
+---------+----------+-------------+------------+------------+--+
|       1 | Sausage  | Fry it      | Main dish  | www....com |  |
|       2 | Pizza    | Bake it     | Main dish  | www....com |  |
|       3 | Burger   | Eat it      | Main dish  | www....com |  |
+---------+----------+-------------+------------+------------+--+

配料表

代码语言:javascript
运行
复制
+---------+----------+-------------+------------+------------+--+
|   id    | recipeid |  ing_num    |  ing_meas  |   ing_name |  |
+---------+----------+-------------+------------+------------+--+
|       1 | 1        | 1           | stack      | sausage    |  |
|       2 | 2        | 200         | g          | wheat      |  |
|       3 | 2        | 100         | g          | beef       |  |
+---------+----------+-------------+------------+------------+--+

更新

我尝试实现了Beginner/Raymond的解决方案:

代码语言:javascript
运行
复制
"SELECT *, COUNT(*) as `total_ingredients`
  FROM opskrifter as k
     , ingredienser as i
 WHERE k.id = i.opskrifterid 
   AND i.ing_name IN ($vals)
   GROUP BY k.id
 ORDER BY COUNT(*) DESC"

$vals = "'" . str_replace(",", "', '", $searchquery) . "'";$searchsquery = $_POST['search']; //From the searchfield

不幸的是,搜索只考虑了第一个单词,例如:“盐,意大利面”,它显示了每个含有盐的食谱。但包含这两种成分的配方并不是排序最高的。

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-01-09 16:08:40

雅各布!

我认为这个查询可以解决您的问题。求你了试试吧。

代码语言:javascript
运行
复制
SELECT k.id
     , k.name
     , COUNT(*) 
  FROM opskrifter k
     , ingredienser i
 WHERE k.id = i.opskrifterid 
   AND i.ing_name IN ('sausage','beef', 'wheat')
 ORDER BY COUNT(*) DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41551617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档