lizhan

导航

sql 的join

SELECT     P.PROC_ID AS HYPO_PROC_ID, R.PROP_VAL AS PARE_PROC_ID, I.PROP_VAL AS HYPO_SEQ_ID
FROM         dbo.PROC_INST_ALL AS P INNER JOIN
                      dbo.DATA_PROP_INST 
AS R ON P.PROC_ID = R.PROC_ID INNER JOIN
                      dbo.DATA_PROP_INST 
AS I ON P.PROC_ID = I.PROC_ID
WHERE     (R.PROP_NAME = 'PareProcID'AND (I.PROP_NAME = 'HypoSeqID')

在两张表中查数据,返回的结果包含的字段有:HYPO_PROC_ID ,PARE_PROC_ID,HYPO_SEQ_ID

主要的功能是:查找出每个流程实例中的父子流程ID,其中流程ID保存在PROC_INST_ALL表,父子流程的ID 放在DATA_PROP_INST。DATA_PROP_INST表中的记录:每一条记录只保存父流程或者子流程的ID,不可能这条记录同是父子流程,既是父子流程的ID不能同时有值。


首先从PROC_INST_ALL 流程实例表中 获取到proc_id,然后根据这个id去 join 另外一个表:DATA_PROP_INST,查出parentid,条件为R.PROP_NAME = 'PareProcID',然后在join一次,查出childid,条件为PROP_NAME = 'HypoSeqID'。

总结:sql语句是和业务有关的,写的sql语句能否准确表达出业务的需求很重要。
需要的能力:根据业务写出sql,同时sql也要准确表达业务需求

posted on 2008-07-03 17:06  lizhan  阅读(184)  评论(0)    收藏  举报