0

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

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

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

在第二次单击时,配方被过滤为仅包含第一种成分和这个新成分。在第三次单击时,应用相同的过滤系统。

想象一下下面的场景(即使数据库看起来不像下面)

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

1个ABC

2 CDF

3 安倍

4 艾德

公元前 5 年

6 防御

第一次点击:(A) 返回 --> 1, 3, 4

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

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

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

4

2 回答 2

1
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

这个解决方案对我有用。然而,我正在开发的应用程序的性质需要存储数百个甚至数千个食谱才能很好地运行,即。不返回零结果。相当简单的概念,但很难正确。

于 2011-09-30T11:38:07.767 回答
0

您需要返回ridwhere非常简单rid in (list of rids in relations where iid= given iid)

于 2011-09-22T11:27:02.313 回答