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

时间:2013-09-12 12:20:20

标签: sql oracle-apex

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

人员

id    name

201   john
302   sarah
787   bob

产品

product_editor_id     product_name

201                   car
307                   shoe
728                   airbag

正如您在员工表中看到的,我有员工详细信息,在产品中我有员工ID来显示创建它的员工。

在我的报告中,我从员工表中选择了所有内容,但是您看到我的工作人员在哪里id我不想显示id,而是显示他们的名字

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

select * from staff Inner join
company_car ON
staff.staff_car_id=company_car.vehicle_id_staffid

如果该查询没有意义。基本上我这样做只显示有公司车的员工,而vehicle_id_staffid与员工ID相同。

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

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: query block has incorrect number of result columns

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

1 个答案:

答案 0 :(得分:0)

可能最简单的方法是在其中创建包含staff_id的原始报告。所以 将新报告创建为新页面或页面上的区域。 - 像:

Select * from company_car

因此,您获得将staff_id作为其中一列的报告。然后您编辑页面属性并转到报告。

enter image description here

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

转到显示为并选择'根据LOV显示为文字不要保存状态'

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

并输入:

select id r, name d from staff;

select id r, name||' '||surname d from staff;

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