问题的标题不清楚,我会尝试描述它。
在我的模型中,我有以下内容:
Network 对象包括 Lines,Line 对象包括 Routes(这是用于公共交通)。
现在我有一个Subscription表,我可以在其中处理在 Networks、Lines 或 Routes 上旅行的用户订阅:
╔════╦═════════╦══════╦═══════╗
║ ID ║ Network ║ Line ║ Route ║
╠════╬═════════╬══════╬═══════╣
║ A ║ 1 ║ 6 ║ 12 ║
║ B ║ 2 ║ 3 ║ NULL ║
║ C ║ 1 ║ NULL ║ NULL ║
╚════╩═════════╩══════╩═══════╝
这意味着:
- 订阅 A 仅在路线 12 上有效
- 订阅B适用于3号线所有线路
- 订阅 C 在网络 1 的所有路由上都有效。
我需要获得路线#12 上允许的所有订阅,即我需要获取第一行和第三行。
请问什么样的请求可以让我这样做?
最后,我将使用 JPQL 在 Java 中执行此操作,但我想首先了解如何在纯 SQL 中执行此操作。
这不是编写此查询的最佳方式,但这应该可以解决问题。
您可以更改加入的条件。如您所见,它在
IN
Clause 中执行 3 个 select 语句(其中一个是重复的),这可能会影响性能。就像是: