Sql 从两个表中多次选择以获得两个不同的结果

Sql 从两个表中多次选择以获得两个不同的结果,sql,oracle-apex,Sql,Oracle Apex,我正在使用apex应用程序构建创建报告 桌子 员工 id name 201 john 302 sarah 787 bob 产品 product_editor_id product_name 201 car 307 shoe 728 airbag 正如您可以在staff表中看到的,我有staff details,在产品中我有staff id以显示创建它的人员

我正在使用apex应用程序构建创建报告

桌子

员工

id    name

201   john
302   sarah
787   bob
产品

product_editor_id     product_name

201                   car
307                   shoe
728                   airbag
正如您可以在staff表中看到的,我有staff details,在产品中我有staff id以显示创建它的人员

在我的报告中,我从staff表中选择了所有内容,但是您可以看到我在哪里有staff
id
,我不想显示
id
,而是显示他们的姓名

我已经为此重写了一个查询。我问这个问题的原因是,在前面的问题中,我有类似的问题

select * from staff Inner join
company_car ON
staff.staff_car_id=company_car.vehicle_id_staffid
如果这个问题没有意义。基本上,我这样做是为了只显示拥有公司汽车的员工,并且车辆标识与员工标识相同

无论如何,对于这个查询,我需要将我的新查询添加到

select distinct name from staff
left join product on 
staff.id=product.product_editor_id
我试过了

select * from staff Inner join
company_car ON
staff.staff_car_id=company_car.vehicle_id_staffid
UNION
select distinct name from staff
left join product on 
staff.id=product.product_editor_id
但是apex说
ORA-01789:查询块的结果列数不正确


我希望结果有所不同。第一个查询应该与第二个查询有任何问题,因为它们只是在做自己的事情。

最简单的方法可能是创建包含员工id的原始报告。因此 将新报告创建为新页面或页面上的区域。 -比如:

Select * from company_car
所以,您将得到一个报告,该报告将以staff_id作为列之一。然后您编辑页面属性并转到报告

选择报告属性,然后从报告中的列列表中选择staff_id列编辑(左侧的铅笔图标)

转到显示为并选择“根据LOV显示为文本不保存状态”

将显示值列表。转到值列表部分

和类型:

select id r, name d from staff;


在这里,您需要将员工id与姓名和姓氏链接起来,这将显示在报告上,而不是无意义的id。或者,您可以创建静态LOV并使用它填充此列,或者您可以尝试构建JOIN语句。

这两个查询是实际相关的,还是有不同的用途?如果不同,那么你应该简单地将两者分开,而不是引入一个联盟。出现错误的原因是,第一次查询返回的列与第二次查询返回的列不同-这很容易修复,但结果集可能没有多大意义。@nickebbitt这是一个好主意,但问题是在apex application builder中,当您进入
编辑区域时,您只有一个
源代码
在源代码中查询和。报告将显示您从查询中选择的任何内容。这就是问题所在。如果不是这样,我会像你刚才那样做的said@nickebbitt但这是正确的。你试图做一些不可能的事情。联合查询时,它们需要相同的列集,而不是查询1中的4和查询2中的3。目标是什么:显示拥有公司汽车和/或是产品编辑的员工的所有员工信息?@Tom i
尝试了工会,因为我试图显示员工姓名而不是他们的
id
。因此,通过使用union,我认为如果它检查staff表,并且
id
product
表中的匹配,那么它将返回
name
。希望这能让你sense@uykenpachi我无意冒犯,但这是一些基本的sql知识。我们当然可以提供答案,但我强烈建议你选择一本书、一门课程或一些好的阅读材料来了解更多。编写一个能够得到您想要的查询的第一步是简单地考虑:我有什么,我需要什么,我有什么可以支配。同样,当问你的问题时,你应该记住这一点,因为你的问题真的不清楚!你为了一个神秘的原因试图进行一次结合,这只会进一步混淆问题。再说一遍,没有冒犯的意思。这是一份报告/表格。因此,我无法编辑该字段/列,不幸的是,我感到困惑。您正在尝试从数据库获取数据还是插入数据?页面上的元素通常是表单或报表。请记住,您每页有多个表格或报告。。。
select id r, name||' '||surname d from staff;