从一个where子句查询多个表

时间:2014-05-04 08:53:15

标签: sql maximo

我使用的字段类会过滤公司的查询列表,只显示那些提供特定服务的公司。

使用的4个表是:PURCHVIEW,PCSRVCS,SRVCFETCH和COMPANIES,我使用的方法是:

void    setRelationship(java.lang.String objectName, java.lang.String whereClause)

所以我只限于一个要链接的对象,而且我选择了COMPANIES,因为我希望该表中的公司信息显示在查找中。

PURCHVIEW有一个' contractnum'属性也包含在PCSRVCS中

PCSRVCS拥有' contractnum'和' servicesid'

最后SRVCFETCH有2个属性:' servicesid'和'公司'

在完成以下操作后,我完全迷失了如何创建连接:

"contractnum = (select contractnum FROM PCSRVCS where contractnum = :contractnum"

总结:鉴于PURCHVIEW中的contractnum,我需要在PCSRVCES中使用contractnum进行检查 - >检查PCSRVCES中的servicesid与SRVCFETCH中的servicesid - >将在SRVCFETCH中具有该serviceid的公司与COMPANIES表中的信息进行匹配。

2 个答案:

答案 0 :(得分:1)

您可以使用已经开始的子查询方法将多个表连接在一起。

此查询可能没有正确的表和字段名称,但根据您提问中提供的信息,它应该非常接近。

contractnum in (
    select contractnum from
            srvcfetch sf
            inner join pcsrvces ps on ps.serviceid = sf.serviceid
            inner join purchview pv on pv.contractnum = ps.contractnum
        where
            pv.contractnum = :contractnum
)

答案 1 :(得分:0)

您可以通过在SQL管理工作室中创建自定义视图来完成此操作,以便从4个表中设置/过滤所需的数据集。此视图将仅具有基于所需过滤条件的contractnum字段。 (即,从table1 join table2 join table3等创建视图CustomViewName作为select contractnum)。 然后在你的whereclause contition你需要做的就是contractnum in(从CustomViewName中选择contractnum)。