我想查询的一系列工作跟踪系统的Sybase优势表以建设正在进行作业的报告和他们的到期日有关。
该系统采用了“父/子”为作业及其组件的关系。工作数据(父母)存在于“发布”表中,组件的数据(儿童)在“pnlrel”表中。由于日期是本作中的“释放”表中的工作,但不存在在“pnlrel”表格组件。我想建立一个查询联接表的方式允许使用父母的到期日,以表示输出的孩子。该数据库的Sybase优势11。
所涉及的表和字段:
涉及到几个其他表留出了清晰的例子。
我试图连接两个表彻底,甚至加入了他们基于从一个表等于从另一个表的一个字段中的值值的串联,但我仍然没有得到所需的输出。
SELECT inproces."H-JOB#", release."R-DUE-DATE"
FROM inproces
left join release on inproces."H-JOB#" = release."R-TRACKING-NBR"
left join pnlrel on inproces."H-JOB#" = pnlrel."P-TRACKING-NBR"
这将返回作业编号和家长的截止日期,而不是孩子。
|ABC-0100-001 | 01/01/2000 | (parent)
|ABC-0100-001P01| NULL |(child)
|ABC-0101-002 | 01/01/2020 | (parent)
|ABC-0101-002P01| NULL |(child)
期望的结果将是为孩子显示父的截止日期,因为它有没有它自己:
|ABC-0100-001 | 01/01/1901 | (parent)
|ABC-0100-001P01 | 01/01/1901 | (child displays parent's due date)
|ABC-0101-002 | 01/01/2020 | (parent)
|ABC-0101-002P01 | 01/01/2020 | (child displays parent's due date)
如果我理解正确,形成家长和孩子标识符的方式,下面的查询应该做的伎俩:
SELECT inproces."H-JOB#", release."R-DUE-DATE"
FROM inproces
LEFT JOIN release
ON inproces."H-JOB#" LIKE CONCAT(release."R-TRACKING-NBR", '%')
这应该是足够的宽容让孩子过程(即"H-JOB#"
与看起来像'ABC-0100-001P01'
的值)来找到它们的父版本("R-TRACKING-NBR"
:'ABC-0100'
)。