有没有办法加入使用级联字段的目标表?

问题描述 投票:0回答:1

我想查询的一系列工作跟踪系统的Sybase优势表以建设正在进行作业的报告和他们的到期日有关。

该系统采用了“父/子”为作业及其组件的关系。工作数据(父母)存在于“发布”表中,组件的数据(儿童)在“pnlrel”表中。由于日期是本作中的“释放”表中的工作,但不存在在“pnlrel”表格组件。我想建立一个查询联接表的方式允许使用父母的到期日,以表示输出的孩子。该数据库的Sybase优势11。

所涉及的表和字段:

  1. inproces - 工作当前在过程中,包括父母和儿童。 H-JOB# - 作业数量和释放ID(即ABC-0100-001;工作ABC-0100,释放-001)| H-JOB#| | ABC-0100-001 | | ABC-0101-002 | | ABC-0100-001P01 | | ABC-0101-002P01 |
  2. 释放 - 所有的父母-Job# - 直接匹配到H-JOB# R-到期日期 - 作业的截止日期| JOB#| R-到期日期| | ABC-0100-001 | 01/01/2000 | | ABC-0101-002 | 2020年1月1日|
  3. pnlrel - 所有的孩子 P-JOB-NBR - 主作业号(即ABC-0100) P-REL-NBR - 作业的发布ID(即-001)| P-JOB-NBR | P-REL-NBR | P-REL-ID | | ABC-0100 | 001 | P01 | | ABC-0100 | 001 | P01 |

涉及到几个其他表留出了清晰的例子。

我试图连接两个表彻底,甚至加入了他们基于从一个表等于从另一个表的一个字段中的值值的串联,但我仍然没有得到所需的输出。

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)
sql join sybase concat advantage-database-server
1个回答
0
投票

如果我理解正确,形成家长和孩子标识符的方式,下面的查询应该做的伎俩:

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')。

© www.soinside.com 2019 - 2024. All rights reserved.