Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Discoveryr-单个表上的多个联接_Oracle_Business Intelligence_Discover - Fatal编程技术网

Oracle Discoveryr-单个表上的多个联接

Oracle Discoveryr-单个表上的多个联接,oracle,business-intelligence,discover,Oracle,Business Intelligence,Discover,我在数据库表的BusinessArea下定义了两个文件夹,分别是EMP和PROJECTS EMP表有以下列 emp_number emp_name proj_id proj_initiated_by proj_started_by proj_closed_by “项目”表有以下列 emp_number emp_name proj_id proj_initiated_by proj_started_by proj_closed_by 连接生成为 emp.emp_number -> p

我在数据库表的BusinessArea下定义了两个文件夹,分别是EMP和PROJECTS

EMP表有以下列

emp_number
emp_name
proj_id
proj_initiated_by
proj_started_by
proj_closed_by
“项目”表有以下列

emp_number
emp_name
proj_id
proj_initiated_by
proj_started_by
proj_closed_by
连接生成为

emp.emp_number -> projects.proj_initiated_by (one_to_many)
emp.emp_number -> projects.proj_started_by (one_to_many)
emp.emp_number -> projects.proj_closed_by (one_to_many)
在Discoverer Desktop中,当我尝试创建报告时,我能够看到 发起人的员工姓名

但是,对于started_by和closed_by,我不确定如何显示启动和关闭项目的人员的员工姓名

employee name of person who started (started_by)    
employee name of person who started (closed_by)

感谢您在这方面的帮助

您可以使用两种变体: 每个人都加入emp-3人加入 制作一些函数或从emp中选择emp\U名称,其中emp\U编号=。。。在选择性部分中

我不熟悉您可能正在使用的特定报告工具,但我可以说,编写SQL查询或让报告引擎为您编写一个查询肯定没问题。。。包含对同一表格的多个引用,例如EMP。

注意我如何使用别名I、s、p来消除对emp表的两个不同且不相关的引用的歧义。和项目表(两者都已联接到该表)。我还使用AS为结果指定了不同的列名

另外:我选择在这里使用内部联接,而不是左外部联接。因此,此查询将只返回同时具有启动器和启动器的项目。这是一个武断的选择,也许是不恰当的选择。如果我选择使用左外部联接,则会列出每个项目,但“按名称启动”和/或“按名称启动”可能为空,并且结果集会更大


如果此报告工具正在为您创建SQL查询,那么您可能会在稍微深入阅读用户手册的高级部分后发现,它将有一些创建类似于此的查询的方法。包括各种类型的联接。

以实现以下功能

emp.emp_number -> projects.proj_initiated_by (one_to_many)
emp.emp_number -> projects.proj_started_by (one_to_many)
emp.emp_number -> projects.proj_closed_by (one_to_many)
是创建emp表的三个对象并为其创建联接

projects.proj_initiated_by = emp1.emp_number 
projects.proj_started_by = emp2.emp_number 
projects.proj_closed_by = emp3.emp_number

Mike,在Discoverer中,有一个使用SQL查询生成报告的选项,可以使用数据库对象创建业务区域以创建报告。我知道使用SQL查询可以获得预期的结果。但我想知道如何使用基于数据库对象的文件夹来实现这一点。这里我不得不说,我自己还没有使用Discoveryr,所以我不知道。这种情况可能会打破“文件夹”的比喻,除非有一种明显的方法可以包含“文件夹”nee:在报表定义中多次包含数据库表。因此,您可能会遇到这样一种情况:您只需要编写一个SQL查询。或者,可能有一些高级功能。我只能有意义地描述实际必须呈现给SQL server的内容,而不是为了达到目的必须在这个或那个产品中使用的旋转。祝你好运。P.S.:你可以肯定,这个报告产品的设计师知道这种要求,因此他们会考虑到它。。。希望不要简单地认输并强迫您编写SQL。例如,在Microsoft Access和Paradox中,有数据模型的概念。你正在处理的需求是“高级的”,是的,但实际上只是稍微有点。。。浏览手册的中间部分到后面部分:-Mike,我在没有SQL的情况下成功实现了,请参见我发布的答案。谢谢你的帮助。啊,很好。毫无疑问,报告工具正在幕后生成必要的SQL和连接。完美!通常情况下,您会发现自己在想:我知道我希望这个工具[告诉SQL server…]做什么。现在,我该如何告诉这个工具去做呢?我在业务领域有三个连接,但是在Discoveryr Desktop中,我不确定如何使用三个连接来实现预期的结果。使用select查询是一个选项,因为我希望在不使用SQL查询的情况下实现它。