我有一个如下所示的MySQL数据库:

Recipes (rid, name)
Ingredients (iid, name)
Relationship (rid, iid)


我有一个前端网页,在网格中显示成分。当用户单击第一个成分时,将返回包含该成分的所有食谱。

第二次单击时,将过滤食谱以仅包括第一种成分和该新成分。第三次单击,将应用相同的过滤器系统。

想象以下情形(即使数据库看起来不是下面所示)

食谱(1,2,3,4,5,6)和成分(A,B,C,D,E,F)

1 A B C

2 C D F

3 A B E

4 A D E

5 B C E

6 D E F

首次点击:(A)返回-> 1、3、4

第二次单击:(B)返回-> 1,3

第三次单击:(C)返回-> 1

我将如何使用PHP和MySQL做到这一点?

最佳答案

SELECT re.*
FROM recipes re
WHERE
(
      SELECT COUNT(1)
      FROM relationships sh
      WHERE
            sh.rid = re.rid
            AND sh.iid IN (A, B, C)
) >= 3


此解决方案对我有用。但是,我正在开发的应用程序的性质需要存储数百个甚至数千个配方才能使其正常运行。而不返回零结果。很简单的概念,但是要正确就很难。

关于php - PHP/MySQL中的配方查找器,可按成分过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7513877/

10-10 02:52