【发布时间】:2013-09-12 23:27:57
【问题描述】:
我正在使用 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
我希望它的结果有所不同。第一个查询应该对第二个查询有任何问题,因为他们只是在做自己的事情。
【问题讨论】:
-
这两个查询实际上是相关的,还是它们有不同的用途?如果不同,那么您应该简单地将两者分开,而不是引入 UNION。您收到错误的原因是第一个查询返回的列与第二个查询不同 - 这可以轻松修复,但结果集可能没有多大意义。
-
@nickebbitt 这是一个好主意,但是当您继续使用
Edit Region时,事情就在 apex 应用程序构建器中,您只有一个source来编写查询和源代码。该报告将呈现您从查询中选择的任何内容。那是问题。如果不是这样,我会按照你刚才说的那样做 -
@nickebbitt 是正确的。你正在尝试做一些不可能的事情。当您合并查询时,它们需要相同的列集,而不是查询 1 中的 4 和查询 2 中的 3。目标是什么:显示拥有公司汽车和/或产品编辑的员工的所有员工信息?
-
@Tom i
TRIEDunion 因为我试图显示员工姓名而不是他们的id。因此,通过使用联合,我想如果它检查人员表并且id与product表中的匹配,那么它将返回name。希望这是有道理的 -
@uykenpachi 我无意冒犯,但这是一些基本的 sql 知识。我们当然可以提供答案,但我强烈建议您拿起一本书或课程或某种好的阅读材料来了解更多关于这方面的信息。编写一个得到你想要的查询的第一步是简单地考虑:我有什么,我需要什么,我有什么可以支配的。同样,在问您的问题时,您应该记住这一点,因为您的问题确实不清楚!您出于某种神秘的原因尝试执行联合只会进一步混淆问题。同样,没有冒犯的意思。
标签: sql oracle-apex