gpt4 book ai didi

mysql - 多对多表并使用数组查询同一变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:02 25 4
gpt4 key购买 nike

已解决 - 请参阅下面的 Bish

我有一个全部转储到 $fruitid[] 的复选框列表和一个多对多表 1:

BoxID  FruitID
01 01
01 02
02 01
02 03
02 04
03 02
etc. etc.

我希望用户选中他们想要的每个水果旁边的框,然后查询以拉出每个框的列表,其中包含所有选定的水果(其他水果也可以,这是最低要求,不是精确的内容搜索)。

我的 PHP工作得很好,但我对我认为是一个简单的 MySQL 字符串感到困惑。基本上如果我

SELECT boxid FROM table1 WHERE fruitid=$fruitid1 AND fruitid=$fruitid2 AND etc. 

在输入所有检查数据之前,我最终没有结果,因为没有一行包含超过一个 fruitid。这有意义吗?

我能想到的唯一解决方案是一堆嵌套的 select 语句,每个语句都会缩小前一个子集的结果池,直到您搜索完原始数组中的所有值。这似乎既占用大量 CPU 资源又编码起来很麻烦。

有没有更好的办法?

最佳答案

基于当前的建议,您应该能够通过简单地添加 GROUP BY 和 HAVING 子句来获得您正在寻找的内容:

SELECT boxid FROM table1 WHERE fruitid IN ($fruitid1, $fruitid2, ...) GROUP BY boxid HAVING COUNT(*) = $selectedFruitCount;

通过按 boxid 分组并添加 COUNT(),您可以获得每个盒子包含的“有趣”水果的数量。如果该计数等于所选水果的总数,则该框必须包含每个所选水果(可能更多)。请记住,这是假设 boxid 和 fruitid 的组合是唯一的。

关于mysql - 多对多表并使用数组查询同一变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1665149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com