php – MYSQL可以使用JOIN获得分配给多个“类别”的结果吗?
发布时间:2020-12-13 16:44:38 所属栏目:PHP教程 来源:网络整理
导读:我是 mysql世界的新手,我在从数据库中获取所需数据时遇到了一些麻烦. 我有两张桌子…… 结果 ID | TITLE | LOTS OF OTHER DATA |1 | res1 | |2 | res2 | | 3 | res3 | |4 | res4 | | 5 | res5 | | 分类 ID | RESULT_ID | CATEGORY NAME |1 | 1 | purchase |2
我是
mysql世界的新手,我在从数据库中获取所需数据时遇到了一些麻烦.
我有两张桌子…… 结果 ID | TITLE | LOTS OF OTHER DATA | 1 | res1 | | 2 | res2 | | 3 | res3 | | 4 | res4 | | 5 | res5 | | 分类 ID | RESULT_ID | CATEGORY NAME | 1 | 1 | purchase | 2 | 1 | single_family | 3 | 1 | conventional | 4 | 2 | usda | 5 | 3 | somecategory | 我正在尝试创建一个查询,该查询将选择属于查询中提供的所有类别的结果.例如,购买和购买的查询single_family&此示例中的常规将返回结果表中的第一个结果. 那有意义吗?是否有一个查询会执行此操作,或者这更像是我的数据库结构的问题? 非常感谢! 解决方法
尝试这样的事情:
SELECT * FROM Results r INNER JOIN Categories c on r.ID = c.RESULT_ID WHERE c.name in ('purchase','single_family','conventional') GROUP BY r.ID HAVING COUNT(c.ID) = 3 带连接的基本选择将仅为结果1获取三行. 编辑:要确保在更改数据库时代码不会中断,应始终选择明确要求的字段:SELECT r.ID,.. FROM .. 因此,您基本上对所有类别的所有类别表进行简单连接,其中类别名称是列表中的名称之一.尝试手动运行3行,看看你得到的结果. 接下来按结果ID分组.这意味着您将共享相同结果ID的所有行聚合到一行中.最后一行表示我们正在过滤由3行聚合的聚合列.这意味着您只返回具有3个匹配类别的结果. 因此,这种方法的唯一问题是,如果您在Categories表中有重复的result_id,categoryname. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |