版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wx19950101/article/details/79925486
一 联表查询的关键在于:能够知道最后联表之后的一张大表是怎么样的。几个表的数据是个什么对应关系。
二 举例说明:查询已办
需要关联的表有:oa_fw_data gy_user gy_department oa_process_data oa_activity_data oa_activity_record
sql如下:
select ...
oar.record_time
from oa_fw_data a
LEFT OUTER JOIN gy_user c ON a.fwzz = c.user_id
LEFT OUTER JOIN gy_department d on a.fwngdw = d.department_id
LEFT OUTER JOIN oa_process_data opd ON a.fw_data_id = opd.oid
LEFT OUTER JOIN oa_activity_data oad ON oad.process_data_id = opd.process_data_id
LEFT OUTER JOIN oa_activity_record oar on a.fw_data_id= oar.object_id and activity_code<>'back' and oar.user_id = '78014A773CB63EA9E0440003BA221BD6' and oad.activity_data_id = oar.activity_data_id
根据业务逻辑,这个联表查询的数据的对应关系是:
oa_fw_data : gy_user : gy_department : oa_process_data : oa_activity_data : oa_activity_record
1 : 1 : 1 : 1 : n : 1
所以这张表的函数就是oa_fw_data的总数据a X n = an。
三 然后我想查询出我的已办
1 现在是oa_activity_record中的一个已办对应所有的activity_data,这个时候就要加上
oa_activity_record中的activity_data_id = oa_activity_data中的activity_data_id