是否可以合并这两个查询?

时间:2015-02-03 18:54:40

标签: java sql oracle

我正在编写一个SQL查询来计算对象。我有大约50个预先编写的查询,每个查询基本上都是这样编写的:

    "select count(1) from SOME_TABLE where identifier = :ID"

我用Java编写。 SOME_TABLE已写入查询(每个查询都不同)。在运行时,交换机/案例确定要执行哪个查询以及要发送哪个 ID

基本上,可以调用各种查询,但 ID 是查询内部唯一更改的内容。

因此,如果我想计算中的所有 pinetrees ,我会将 pineTree作为ID 发送到查询算树。很简单。正如我所提到的,有一个巨大的开关/案例可以确定TABLE_NAME,ID和确切的查询。

问题是,我正在尝试计算表的所有对象,并且我正在尝试使用各种ID来计算它们。例如:

    query1: "select count(1) from LIST_OF_TOYS where animalId = theListOfIDsfromQuery2"
    query2: "select allThePetIDs from LIST_OF_PETS where ownerId = :myID

这基本上就是我想要做的。我想计算我的宠物拥有的所有玩具,但我的ID和LIST_OF_TOYS表之间没有直接联系。

我知道如何使用两个单独的查询来执行此操作,但我更倾向于编写一个只将ownerId作为参数的查询,以便我可以将其添加到我的巨型开关/案例中(并保持我的代码整洁) 。我可以编写我想要的查询,但我想知道是否可以将此作为单个查询和单个参数执行。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

select count(1) from LIST_OF_TOYS where animalId in (select allThePetIDs from LIST_OF_PETS where ownerId = :myID)