我使用的字段类会过滤公司的查询列表,只显示那些提供特定服务的公司。
使用的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表中的信息进行匹配。
答案 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)。