我很抱歉,因为我真的不知道如何正确地形成我的问题,所以我将解释我的问题:
我有 3 个简单的 MySQL 表:
recipes
带有列的表id
和许多其他对这个问题不重要的表ingredients
有 2 列的表:id
,name
recipes_ingredients
具有 2 个 ID 列的关联表id_recipes
和id_ingredients
现在我希望用户按他们的成分搜索食谱。用户可以一次指定一种或多种成分。当我想要匹配所有用户成分的食谱或匹配至少一种成分的食谱时,我知道如何为这种情况编写 SQL。
但我的问题是,我如何订购食谱,以便第一个是与用户搜索的成分匹配最多的食谱。
我整天都在想这个,但我没有想出任何想法。感谢您提前提供任何帮助或提示。
编辑:我对 SQL 查询的条件是,我想要所有在recipes_ingredients
表中至少有一种成分的食谱,但我想要那些匹配的食谱按搜索到的成分的匹配数排序。
例如:用户搜索 3 种成分。有 10 种食谱至少含有其中一种成分。但我想对它们进行排序,所以第一个食谱可能会匹配所有 3 种搜索到的成分。然后将是仅匹配 2 种成分的食谱,最后将是仅具有一种匹配成分的食谱。