gpt4 book ai didi

php - 从具有所有这些详细信息的多对多表中选择项目...正确的解决方案?

转载 作者:行者123 更新时间:2023-11-29 15:05:03 26 4
gpt4 key购买 nike

(PHP/MySQL) 首先我要说的是,这可行,并且我想知道是否有更干净的方法。这似乎有点……野蛮?而且我并不以高效编码而闻名。 :-/

TABLE (many-to-many)
scenid mapid
AA 01
AA 02
AA 04
BB 01
BB 04
CC 02
CC 03
CC 05
DD 01
DD 02
DD 03

您正在搜索具有所有这些 map 的场景:01、02、03
(拥有全部+其他一些就可以了)

我当前的方法是使用此查询:

SELECT scenid, COUNT(scenid) FROM `TABLE`
WHERE mapid IN ( 01, 02, 03 )
GROUP BY scenid ORDER BY COUNT(scenid) DESC, scenid ASC

这会产生这个列表:

scenid  COUNT
DD 3
AA 2
CC 2
BB 1

然后,在 PHP 中,我运行一个 while 循环,只要 COUNT 仍然是 == 即可将场景复制到新数组Mapid 的总数(在本例中为 3)。这会删除仅包含部分所需 map 的所有结果。

再说一次,这行得通。但是我对 MySQL 和 PHP 还很陌生(它们是我编程的第一步),所以我总是想知道我的“是否行得通” ”是另一个人的“你看到那个白痴刚刚重新发明轮子了吗?lulz

还有更好的办法吗?感谢您抽出时间。

最佳答案

您的查询看起来没问题,但您可以使用 HAVING 子句在 SQL 中进行过滤:

SELECT scenid, COUNT(*)
FROM `TABLE`
WHERE mapid IN ( 01, 02, 03 )
GROUP BY scenid
HAVING COUNT(*) = 3
ORDER BY scenid ASC

关于php - 从具有所有这些详细信息的多对多表中选择项目...正确的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324685/

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