php mysql查询所有_mysql&php-查询所有或更少值的记录,但不超过

(已解决,见结尾)

我需要有关以下PHP或MySQL代码结构的提示:

假设你有x个独特的盒子,还有y种水果。每个盒子可以包含每种水果中的一种。有些框可能只有两种类型,有些框可能每种类型都有。所有框至少有一种类型。

对于查询,用户有一个复选框列表,每种水果一个。(我假设这些都输入到同一个查询数组中?)

我的问题从这里开始:

如果用户检查

苹果、桔子和葡萄

如何构造查询以返回以下内容:

01号箱(苹果、桔子)

BOX02(葡萄)

03号箱(苹果、桔子、葡萄)

但不是:

04号箱(苹果、桔子、葡萄、梨、香蕉)

如何限制返回到包含$fruit[]或更少的所有给定值的记录,但不包括任何其他值(即使存在请求的值)?另外,这种类型的查询是否有一个特殊的名称,我可以用于将来的引用?

这对我来说真的很艰难,我很感谢你的时间。

(ps-您不必担心格式化输出或类似的事情,这只是为了说明这个概念。我对查询代码很感兴趣。)

编辑-有两个人问过,很抱歉没有进入特定的数据库详细信息。我有三张表:一张表描述每个盒子,一张表描述每个水果,还有一张多对多的表,其中有两列-boxid和水果id。我相信这就是你们两个的想法。

谢谢大家!

我的解决方案

下面的Anax代码帮了我一把,我最后做的是:

表“box”具有列“boxid”(主键)和“box description”

“水果”表有“水果ID”列(主键)和“水果描述”

表“box_has”具有列“boxid”&“水果id”

SELECT boxid FROM box WHERE

boxid NOT IN (

SELECT boxid FROM box_has WHERE fruitid NOT IN ('F01' , 'F02'))

从后向前看代码,最里面的select会找到所有有水果的盒子,而不是我们想要的,不包括那些有我们想要的和其他的麻烦的盒子。

然后,外部select使用框表,其中每个boxid只出现一次,以获得包含所选任何水果的不重复的单个框的干净返回。

谢谢大家的帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值