【发布时间】:2018-09-18 12:34:00
【问题描述】:
我有三个表:flows、document_types 和 documents。 Flows 有许多属于文档类型的文档。
假设我需要选择具有属于某个文档类型列表的文档的所有流,例如,文档类型 id 在 1、2、3 和 4 中。换句话说,我只想选择流具有上述所有文档类型 ID 的文档。我应该如何使用逻辑/查询?
我的第一次尝试是使用where in,但它不能确保文档具有所有文档类型,它至少会查询一个:
select * from flows where id in (
select flow_id from documents where document_type_id in (1, 2, 3, 4)
);
我必须使用 Laravel Eloquent 编写我的查询,但是在发现正确的逻辑之后这将是微不足道的。
【问题讨论】:
-
您可以将 GROUP BY 与条件总和结合使用,例如
GROUP BY <column> HAVING SUM(document_type_id = 1) = 1 AND SUM(document_type_id = 2) = 1 .... -
因为在 Gordon Linoff 上针对我的评论回答“@RaymondNijland 所以我之前应该按“document_type_id”分组吗?”阅读此stackoverflow.com/help/how-to-ask 部分“帮助其他人重现问题”或“我为什么要为在我看来是一个非常简单的 SQL 查询提供 MCVE?” meta.stackoverflow.com/questions/333952/…
标签: mysql sql laravel eloquent