我有一个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做到这一点?
答案 0 :(得分: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
此解决方案适合我。然而,我正在开发的应用程序的性质需要存储数百甚至数千个配方才能使其运行良好,即。没有返回零结果。相当简单的概念,但很难做到正确。
答案 1 :(得分:0)
您需要将rid
返回到rid in (list of rids in relations where iid= given iid)
,这很简单。