【发布时间】:2013-05-23 00:22:32
【问题描述】:
我在 3 个表之间做一个 UNION。为了让您了解情况,一张表被视为主表,另外两张表被视为子表。 2 个子表对于每种情况始终具有相同数量的记录。所以我想在这3个表之间建立一个联合,在这个联合中我想重复在主表中获取的列中的信息,并列出2个子表的信息,其中子表1中的每一行都对应于该行在子表2中。由于专业原因,我无法放置真实的代码,所以这里是一个与我的真实案例相对应的简单示例。 考虑一个名为 Author (Author_ID, Author_FirstName, Author_LastName) 的表。该表将是我们的主表。然后考虑我们有一个名为 Adresses (Adress_ID, Street_Coord, Author_ID) 的表,这将是我们的子表 1。然后考虑名为 Cities 的表 (City_ID, City_Name, Author_ID)。我们的作者 X 在 2 个城市有 2 个地址。当我执行我的查询时,我得到了完全合乎逻辑的结果 R1,但我想修改我的查询以获得结果 R2。您能帮我更改查询以获得结果 R2 吗?
SQL 查询:
SELECT "Author"."Author_ID", "Author"."Author_FirstName", "Author.Author_LastName",
TO_CHAR(NULL) AS "Street_Coord", TO_CHAR(NULL) AS "City_Name"
FROM "Author"
WHERE "Author"."Author_ID"='X'
UNION
SELECT TO_NUMBER(NULL) AS "Author_ID", TO_CHAR(NULL) AS "Author_FirstName", TO_CHAR(NULL) AS "Author_LastName",
"Adresses"."Street_Coord", TO_CHAR(NULL) AS "City_Name"
FROM "Adresses"
WHERE "Adresses"."Author_ID"='X'
UNION
SELECT TO_NUMBER(NULL) AS "Author_ID", TO_CHAR(NULL) AS "Author_FirstName", TO_CHAR(NULL) AS "Author_LastName",
TO_CHAR(NULL) AS "Street_Coord", "Cities"."City_Name"
FROM "Cities"
WHERE "Cities"."Author_ID"='X'
结果 R1:
ID_AUTHOR | AUTHOR_FirstName | AUTHOR_LastName | Street_Coord | City_Name |
----------------------------------------------------------------------------------
X |James | Conor | NULL | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | 1245 rich st | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | 154 music st | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | NULL | Madrid |
----------------------------------------------------------------------------------
X |NULL | NULL | NULL | Barcelona |
----------------------------------------------------------------------------------
结果 R2:我希望你帮助得到这个结果:
ID_AUTHOR | AUTHOR_FirstName | AUTHOR_LastName | Street_Coord | City_Name |
----------------------------------------------------------------------------------
X |James | Conor | 1245 rich st | Madrid |
----------------------------------------------------------------------------------
X |James | Conor | 154 music st | Barcelona |
----------------------------------------------------------------------------------
非常感谢, 瓦卢德
【问题讨论】:
-
您确定不想要 JOIN 而不是 UNION?
-
嘿 eaolson,11 个表的连接崩溃了! ORA-01652:无法在表空间 TEMP 01652 中将临时段扩展 128。00000 -“无法在表空间 %s 中将临时段扩展 %s” *原因:无法为临时段分配所需块数的范围在指示的表空间中。 *操作:使用 ALTER TABLESPACE ADD DATAFILE 语句将一个或多个文件添加到指定的表空间。
-
该错误听起来像是您需要扩展 TEMP 表空间的大小。 stackoverflow.com/questions/11839576/…
标签: sql plsql oracle9i plsqldeveloper oracle-sqldeveloper